python - 如何创建通道敏感损失函数?
问题描述
我正在研究递归自动编码器。神经网络采用两个 2D 图像,每个图像的形状为 (28,28,1),并组合以创建 (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 来创建这些更复杂的结构,以便您拥有更多控制权。
推荐阅读
- java - 在 Spring Boot Camel 应用程序中配置线程池配置文件
- php - 致命错误 Uncaught Twig\Error\LoaderError: Template
- ruby-on-rails - 在哪里查询rails
- python - 谁能解释一下下面的代码是如何工作的?分组相邻列表。Python
- c - C中数组的内存使用情况
- algorithm - “算法问题大小”实际上是什么意思?
- haskell - 使用 Haskell 和 Brick 的 RGB 终端颜色
- java - UsernamePasswordAuthenticationFilter 与自己的端点
- mysql - MySQL - 调用存储过程的问题 (#2014 : commands out of sync)
- java - 每次关闭应用程序时用户都会注销 - Firebase 身份验证 - Android Studio (Java)