【发布时间】:2018-09-02 03:26:46
【问题描述】:
假设我有一个具有一个输入和两个输出的模型。我希望模型第三层的输出成为我的第二个输出的成本函数中的 y_true。 我试过这个:
model.fit(x, [y, model.layers[3].output], ...)
但得到错误:
'Tensor' object has no attribute 'ndim'
我相信这是指我给出的 fit 方法的第二个 y_true。
在 Keras 中可以做这样的事情吗?如果有,怎么做?
【问题讨论】:
-
model.layers[3].output是一个张量,而不是一个numpy.array,它确实没有ndim属性。你想做什么?通常,您可以使用numpy.array's。 -
解释整个画面很复杂,但主要是我想使用其中一个层的输出作为成本函数的 y_true 来训练我的模型。我意识到输出确实是一个没有 ndim 的张量。不过,我想将它与来自相同形状的另一个张量(我的输出 2)进行比较
-
也许您可以将第一个和第二个输出相减,并将其拟合为 [0,0,...,0] 作为
numpy.array?尽管您需要考虑在这种情况下梯度下降和成本函数的作用。 -
为什么网络很难保持这两个输出完全相同?不是在学习 output_1 和 output_2 之间的恒等函数吗?
-
不,我的模型是其他几个模型的复杂连接,我只是为了这个问题试图简化它。你是对的,我不能提供一个张量来适应,但我可以在自定义损失函数中使用它,就像我在发布的答案中所做的那样
标签: tensorflow neural-network keras layer