首页 > 解决方案 > 如何创建通道敏感损失函数?

问题描述

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

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

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

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

标签: pythonrecursiontensorflowkerasautoencoder

解决方案


您可以将解码后的 (28, 28, 2) 分离回 2 张图像作为输出,并用于loss_weights分配重要性权重。从文档中:

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

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


推荐阅读