我可以使用模型图层的输出作为目标来训练相同的模型吗?

时间:2018-03-23 12:39:24

标签: tensorflow neural-network keras layer

假设我有一个输入和两个输出的模型。我希望我的模型的第三层的输出是我的第二个输出的成本函数中的y_true。 我试过这个:

model.fit(x, [y, model.layers[3].output], ...)

但得到了错误:

'Tensor' object has no attribute 'ndim'

我认为这是指我给出拟合方法的第二个y_true。

在Keras可以做这样的事吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

我通过仅更改成本函数来实现这一目标,例如:

def custom_euclidean_distance_loss(layer_output):
    from keras import backend as K
    def wrap(y_true, y_pred):
        return K.mean(K.square(y_pred - layer_output))
    return wrap

由于我没有使用任何先前已知的y_true,我只是喂了一个假的适合。请注意,来自Keras的打印指标不一定正确,但模型将训练没有问题。

如果您确实知道一种更好的方法(比如实际提供适合的图层输出),请告诉我