TensorFlowEstimator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
这 TensorFlowTransformer 在以下两种方案中使用。
- 使用预先训练 的 TensorFlow 模型评分:在此模式下,转换从预先训练的 Tensorflow 模型中提取隐藏层的值,并使用输出作为 ML.Net 管道中的特征。
- 重新训练 TensorFlow 模型:在此模式下,转换使用通过 ML.Net 管道传递的用户数据重新训练 TensorFlow 模型。 训练模型后,输出可以用作评分功能。
public sealed class TensorFlowEstimator : Microsoft.ML.IEstimator<Microsoft.ML.Transforms.TensorFlowTransformer>
type TensorFlowEstimator = class
interface IEstimator<TensorFlowTransformer>
Public NotInheritable Class TensorFlowEstimator
Implements IEstimator(Of TensorFlowTransformer)
- 继承
-
TensorFlowEstimator
- 实现
注解
TensorFlowTransform 使用预先训练的 Tensorflow 模型提取指定的输出。 (可选)它可以进一步重新训练用户数据的 TensorFlow 模型,以调整用户数据上的模型参数 (也称为“传输学习”) 。
为了评分,转换采用预先训练的 Tensorflow 模型、输入节点的名称以及要提取其值输出节点的名称作为输入。 为了重新训练,转换还需要训练相关的参数,例如 TensorFlow 图中的优化操作名称、图形中的学习速率操作的名称及其值、图形中的操作名称,以计算损失和性能指标等。
此转换要求安装 Microsoft.ML.TensorFlow nuget。 TensorFlowTransform 对输入、输出、数据处理和重新训练有以下假设。
- 对于输入模型,目前 TensorFlowTransform 支持 冻结模型 格式和 SavedModel 格式。 但是,只有 SavedModel 格式才能重新训练模型。 检查点 格式目前既不支持评分,也不支持重新训练,因为缺少 TensorFlow C-API 支持加载它。
- 转换一次仅支持评分一个示例。 但是,可以分批执行重新训练。
- 高级传输学习/微调方案 (例如,在网络中添加更多层、更改输入形状、冻结在重新训练过程中不需要更新的层等。) 目前不可能,因为目前无法使用 TensorFlow C-API 在模型中支持网络/图形操作。
- 输入列的名称 (s) 应与 TensorFlow 模型中的输入 () 的名称匹配。
- 每个输出列的名称应与 TensorFlow 图中的某个操作匹配。
- 目前,double、float、long、int、short、sbyte、ulong、uint、ushort、byte 和 bool 是输入/输出的可接受数据类型。
- 成功后,转换将引入一个新列,该 IDataView 列对应于指定的每个输出列。
可以使用或summarize_graph工具获取 GetModelSchema() TensorFlow 模型的输入和输出。
方法
Fit(IDataView) |
火车并返回一个 TensorFlowTransformer。 |
GetOutputSchema(SchemaShape) |
返回 SchemaShape 由转换器生成的架构。 用于管道中的架构传播和验证。 |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保针对缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回将调用委托的 Fit(IDataView) 包装对象。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一系列估算器,以便我们要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加调用一次将调用的委托。 |