TensorflowCatalog 类

定义

TensorFlowTransformer 两种方案在以下两种情况下使用。

  1. 使用预先训练的 TensorFlow 模型评分:在此模式下,转换从预先训练的 Tensorflow 模型中提取隐藏层的值,并使用输出作为 ML.Net 管道中的特征。
  2. 重新训练 TensorFlow 模型:在此模式下,转换使用通过 ML.Net 管道传递的用户数据重新训练 TensorFlow 模型。 训练模型后,输出可用作评分功能。
public static class TensorflowCatalog
type TensorflowCatalog = class
Public Module TensorflowCatalog
继承
TensorflowCatalog

注解

TensorFlowTransform 使用预先训练的 Tensorflow 模型提取指定的输出。 (可选)它可以进一步重新训练用户数据的 TensorFlow 模型,以调整用户数据上的模型参数 (也称为“传输学习”) 。

为了评分,转换采用预先训练的 Tensorflow 模型输入、输入节点的名称以及要提取其值输出节点的名称。 为了重新训练,转换还需要训练相关的参数,例如 TensorFlow 图中的优化操作名称、图形中的学习速率操作的名称及其值、用于计算损失和性能指标的操作的名称等。

此转换要求安装 Microsoft.ML.TensorFlow nuget。 TensorFlowTransform 对输入、输出、数据处理和重新训练有以下假设。

  1. 对于输入模型,当前 TensorFlowTransform 支持 冻结模型 格式和 SavedModel 格式。 但是,只能对 SavedModel 格式重新训练模型。 检查点 格式目前既不支持评分,也不支持重新训练,因为无法加载 TensorFlow C-API。
  2. 转换一次仅支持对一个示例进行评分。 但是,可以分批执行重新训练。
  3. 高级传输学习/微调方案 (例如,在网络中添加更多层、更改输入形状、冻结在重新训练过程中不需要更新的层等。) 目前无法实现,因为目前无法使用 TensorFlow C-API 在模型中支持网络/图形操作。
  4. 输入列的名称 (s) 应与 TensorFlow 模型中输入 (s) 的名称匹配。
  5. 每个输出列的名称应与 TensorFlow 图中的一个操作匹配。
  6. 目前,double、float、long、int、short、sbyte、ulong、uint、ushort、byte 和 bool 是输入/输出的可接受数据类型。
  7. 成功后,转换将引入对应于指定的每个输出列的新列 IDataView

可以使用或summarize_graph工具获取 GetModelSchema() TensorFlow 模型的输入和输出。

方法

LoadTensorFlowModel(ModelOperationsCatalog, String)

将 TensorFlow 模型加载到内存中。 这是一种方便的方法,允许加载模型一次,然后使用它来查询架构和使用TensorFlowEstimatorScoreTensorFlowModel(String, String, Boolean)。 使用此 API 需要 TensorFlow redist 上的其他 NuGet 依赖项,有关详细信息,请参阅链接文档。 TensorFlowModel 还保留对非托管资源的引用,这些资源需要通过显式调用 Dispose () 或隐式声明带有“using”语法的变量/>

LoadTensorFlowModel(ModelOperationsCatalog, String, Boolean)

将 TensorFlow 模型加载到内存中。 这是一种方便的方法,允许加载模型一次,然后使用它来查询架构和使用TensorFlowEstimatorScoreTensorFlowModel(String, String, Boolean)。 使用此 API 需要 TensorFlow redist 上的其他 NuGet 依赖项,有关详细信息,请参阅链接文档。 TensorFlowModel 还保留对非托管资源的引用,这些资源需要通过显式调用 Dispose () 或隐式声明带有“using”语法的变量/>

适用于

另请参阅