如何创建渠道敏感损失功能?

时间:2018-05-11 17:44:09

标签: python recursion tensorflow keras autoencoder

我正在研究一种递归自动编码器。神经网络采用两个2D图像,每个图像形状(28,28,1)并组合以创建(28,28,2)的输入。它们被编码成(28,28,1)形状,并被解码回原始形状(28,28,2)。因此,编码形式的数据可以输入自动编码器进行递归操作。

我们可以假设通道1是新图像,通道2是先前编码的数据。如何创建一个损失函数,对于重构通道2的错误(因为这将携带以前编码的数据)更严重地惩罚?

我在Keras工作,有一个Tensorflow后端。

或者,有没有办法将网络作为一个完整的树进行训练,而不是只对单个两个输入进行训练 - 一次两个输出块?

1 个答案:

答案 0 :(得分:2)

您可以将已解码的(28,28,2)重新分成2个图像作为输出,并使用loss_weights指定重要性权重。来自documentation

model.compile(optimizer='rmsprop', loss='binary_crossentropy',
              loss_weights=[1., 0.2])

是的,Keras中的所有模型都像图层一样,因此您可以将它们链接在一起构建一个树。然后,您可以一次性训练网络,并决定是否要分享权重等。但是,训练可能更困难。我建议使用功能API来创建这些更复杂的结构,以便您有更多的控制权。