我正在研究一个递归自动编码器。神经网络采用两个形状分别为 (28,28,1( 的 2D 图像,并组合以创建 (28,28,2( 的输入。它们被编码成 (28,28,1( 形状,然后解码回原始形状 (28,28,2(。因此,编码形式的数据可以馈送到自动编码器中进行递归操作。
我们可以假设通道 1 是新图像,通道 2 是先前编码的数据。如何创建一个损失函数,对重建通道 2 的错误进行更严厉的惩罚(因为这将携带先前编码的数据(?
我在Keras工作,有一个Tensorflow后端。
或者,有没有办法将网络训练为一个完整的树,而不是只对单个两个输入 - 一次两个输出块进行训练?
您可以将解码后的 (28, 28, 2( 分离回 2 个图像作为输出,并使用loss_weights
分配重要性权重。从文档中:
model.compile(optimizer='rmsprop', loss='binary_crossentropy',
loss_weights=[1., 0.2])
是的,Keras 中的所有模型都像层,因此您可以将它们链接在一起以构建树。然后,您可以一次性训练网络并决定是否要共享权重等。但是,训练起来可能更困难。我建议使用函数式 API 来创建这些更复杂的结构,以便您拥有更多控制权。