首页 > 解决方案 > 结合一个冻结模型的预测输出进行预测,然后将这些预测用作我正在训练的模型的损失?

问题描述

我想将一个冻结模型的预测输出组合到另一个模型的训练阶段。

我尝试过使用不同的图表会话,但它会在训练阶段重置默认图表。

predictions = model1.model(input1, input2, mode)
predictions2 = model2.predict(predictions)

loss1 = mean_squared_error(predictions, labels)
loss2 = mean_squared_error(input2, predictions2)

total_loss = loss1+loss2

optimizer.minimize(total_loss)

ValueError: Tensor Tensor("output_layer/BiasAdd:0", shape=(?, 100), dtype=float32) 不是该图的元素

标签: tensorflowkeras

解决方案


我刚刚想通了!

在 tensorflow 的估计器框架中,将模型加载到估计器空间的“model_fn”中,属性为:“keras_model.trainable=False”

例如片段:

def model_fn(inputs):
    .......
    #some operations

    .......
    model2=load_model('frozen_model.h5')
    model2.trainable=False
    model2.summary()
    predictions= model2(inputs=predictions)

推荐阅读