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

Can I use the output of a model's layer as a target to train that same model?

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

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

但出现错误:

'Tensor' object has no attribute 'ndim'

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

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

我通过仅更改成本函数来做到这一点,例如:

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 的打印指标不会以这种方式正确,但模型将毫无问题地进行训练。

如果您知道更好的方法(比如实际馈送层输出以适应)请告诉我