我可以使用模型层的输出作为目标来训练同一个模型吗?
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 的打印指标不会以这种方式正确,但模型将毫无问题地进行训练。
如果您知道更好的方法(比如实际馈送层输出以适应)请告诉我
假设我有一个具有一个输入和两个输出的模型。我希望我的模型第三层的输出是我第二个输出的成本函数中的 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 的打印指标不会以这种方式正确,但模型将毫无问题地进行训练。
如果您知道更好的方法(比如实际馈送层输出以适应)请告诉我