代码之家  ›  专栏  ›  技术社区  ›  jfga

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

  •  2
  • jfga  · 技术社区  · 6 年前

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

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

    但出现了错误:

    'Tensor' object has no attribute 'ndim'
    

    我认为这是指我给出的fit方法的第二个y\u true。

    在Keras有可能这样做吗?如果是,如何?

    1 回复  |  直到 6 年前
        1
  •  1
  •   jfga    6 年前

    为此,我只更改了成本函数,如:

    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\u true,所以我只喂了一个假人来适应。请注意,Keras打印的指标不会以这种方式正确,但模型将毫无问题地进行训练。

    如果您知道更好的方法(如实际输入图层输出以适应),请让我知道