首页 > 解决方案 > TensorFlow:将来自一个模型的预测整合到新模型的训练中的最简单方法是什么?

问题描述

tf.estimator在训练另一个模型 B 期间,使用训练好的模型 A 的最简单方法是什么?

模型 A 中的权重是固定的。在模型 B 中,我想获取一些输入,计算,将这些结果输入模型 A,然后对输出进行更多计算。

一个简单的例子:

A型回归tf.matmul(input,weights)

在 ModelB 中,我想做以下事情:

  x1 = tf.matmul(new_inputs,new_weights1)
  x2 = modelA(x1) # with fixed weights
  return tf.matmul(x2,new_weights2)

但是对于更复杂的模型 A 和 B,每个模型都被训练为 a tf.estimator(尽管如果有另一个简单的解决方案,我很高兴不使用估计器——我使用它们是因为我想使用 ML Engine)。

这个问题是相关的,但建议的解决方案不适用于训练模型 B,因为 tf.py_func 的梯度是 [None]。我尝试为 tf.py_func 注册一个渐变,但这失败了

不支持的对象类型张量

我也尝试tf.import_graph_def过模型 A,但这似乎加载了预训练图,而不是实际权重。

标签: pythontensorflowgoogle-cloud-ml

解决方案


对于模型可组合性,Keras 工作得更好。您可以将 Keras 模型转换为估算器:

https://cloud.google.com/blog/products/gcp/new-in-tensorflow-14-converting-a-keras-model-to-a-tensorflow-estimator

所以你仍然可以在 ML Engine 上进行训练。

使用 Keras,只需从检查点加载中间层的权重和偏差,并使该层不可训练。看:

是否可以保存经过训练的图层以在 Keras 上使用图层?


推荐阅读