TensorFlow:在一个新模型的培训中,将一个模型的预测结合起来的最简单方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow:在一个新模型的培训中,将一个模型的预测结合起来的最简单方法是什么?相关的知识,希望对你有一定的参考价值。

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

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

一个简单的例子:

ModelA返回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,每个模型都被训练为tf.estimator(虽然我很高兴不使用估算器,如果有另一个简单的解决方案 - 我正在使用它们,因为我想使用ML引擎)。

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

不支持的对象类型Tensor

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

答案

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

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

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

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

Is it possible to save a trained layer to use layer on Keras?

以上是关于TensorFlow:在一个新模型的培训中,将一个模型的预测结合起来的最简单方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中运行 Tensorflow 对象检测 API 模型?

如何部署Tensorflow训练模型以推断Windows独立应用程序

译文 | 简明 TensorFlow 教程:所有的模型

第二十二节,TensorFlow中的图片分类模型库slim的使用

Tensorflow:在具有不同类别数量的新数据集上微调预训练模型

TensorFlow LSTM 预测相同的值