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

问题描述 投票:1回答:1

在训练另一个模型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,但这似乎加载了预训练图,但不是实际的权重。

python tensorflow google-cloud-ml
1个回答
0
投票

对于模型可组合性,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?

© www.soinside.com 2019 - 2024. All rights reserved.