如何在训练自动编码器(回调)期间将keras中的输入随机设置为零?

2024-03-08

我正在联合训练具有 2 个独立输入路径的 2 个自动编码器,并且我想将其中一个输入路径随机设置为零。

我将 Tensorflow 与 keras 后端(功能 API)一起使用。

我正在计算反向传播的联合损失(两个损失的总和)。

A -> A' & B ->B'

损失 => l2(A,A')+l2(B,B')

采用 A 和 B 的网络在潜在空间中连接。 我想将 A 或 B 随机设置为零,并仅在相应路径上计算损耗,这意味着如果输入路径 A 设置为零损耗,则仅使用路径 B 的输出来计算损耗,反之亦然;例如。:

0 -> A' & B ->B'

损失:l2(B,B')

如何随机将输入路径设置为零?我如何编写一个回调来执行此操作?


也许可以尝试以下方法:

import random
def decision(probability):
  return random.random() < probability

定义一个方法,根据某个概率 x 做出随机决策,并使你的损失计算取决于该决策。

if current_epoch == random.choice(epochs):

  keep_mask = tf.ones_like(A.input, dtype=float32)
  throw_mask = tf.zeros_like(A.input, dtype=float32)

  if decision(probability=0.5):
      total_loss = tf.reduce_sum(reconstruction_loss_a * keep_mask
                               + reconstruction_loss_b * throw_mask)
  else:
      total_loss = tf.reduce_sum(reconstruction_loss_a * throw_mask 
                               + reconstruction_loss_b * keep_mask)    
else:
  total_loss = tf.reduce_sum(reconstruction_loss_a + reconstruction_loss_b)
      
  

我假设您不希望每次更新模型参数时都将其中一个路径设置为零,因为这样就存在一个甚至两个模型都无法得到充分训练的风险。另请注意,我使用的输入A创造zero_like and one_like张量,因为我假设两个输入具有相同的形状;如果不是这种情况,也可以轻松调整。

根据您的目标,您还可以考虑替换您的输入A or B使用随机张量,例如tf.random.normal基于随机决定。这会在您的模型中产生噪声,这可能是可取的,因为您的模型将被迫查看潜在空间以尝试重建原始输入。这恰恰意味着您仍然可以使用以下方法计算重建损失A.input and A.output,但实际上你的模型从未收到过A.input,而是随机张量。

请注意,此答案作为一个简单的概念示例。一个工作示例Tensorflow可以被找寻到here https://stackoverflow.com/questions/69713913/how-to-modify-a-variable-inside-the-loss-function-in-each-epoch-during-training.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在训练自动编码器(回调)期间将keras中的输入随机设置为零? 的相关文章

随机推荐

  • 使用 Protobuf-net 的端点行为配置 WCF

    我有一个 WCF 服务 NET 4 它公开 4 个端点 其中一个端点配置有 protobuf net V1 0 0 280 行为扩展 然而 我注意到 protobuf net 行为会启动ALL定义的端点 包括未配置 protbuf net
  • 如何降级或安装特定版本的 Composer?

    我在正在设置的项目中收到以下错误 您正在使用 Composer 2 您的某些插件似乎与它不兼容 确保更新您的插件或报告插件问题以要求他们支持 Composer 2 本周我开始在一家新公司工作 只是想安装他们的项目 但似乎没有办法更改我在 W
  • 如何使用 selenium 验证 target="_blank" 链接?

    我们页面上的某些链接使用 target blank 在新窗口中打开 如何让 selenium 查看正确的窗口 以便我可以验证该页面是否链接到正确的页面 这是我一直在尝试的 open page click link Find us on Fa
  • 防止 Android Fragment 在设备旋转上重新创建

    问题 当我旋转设备时 应用程序中片段中包含的信息将被重新加载 由于该应用程序从互联网上获取信息 这意味着在重新收集数据时一段时间内会缺乏数据 我尝试过的 我读过很多文章和 S O 问题 它们给出了一些一般性的指导 并尝试了他们的解决方案 来
  • 动态链接域不可用

    根据文档 我的项目应该有一个动态链接域 它显示在动态链接页面的顶部 该文档有一个屏幕截图 如下所示 根据 Firebase 文档的域位置 https i stack imgur com 7P2Xd png 然而 在我的项目的动态链接页面上没
  • Java 程序无法运行并抛出有关类的错误

    所以我想运行我刚刚编译的 Start class 文件 它是我从 Start java 编译的 问题是它会抛出这个错误 java Start Exception in thread main java lang NoClassDefFoun
  • 在同步方法中使用 Task.Run() 以避免异步方法等待死锁?

    UPDATE这个问题的目的是为了得到一个简单的答案Task Run 和僵局 我非常理解不混合异步和同步的理论推理 并且我将它们牢记在心 我并不排斥从别人那里学习新东西 只要有可能 我都会尽力做到这一点 有时 一个人需要的只是技术答案 我有一
  • CFLAGS、CCFLAGS、CXXFLAGS - 这些变量到底控制什么?

    我正在使用 GNU make 编译我的 C 代码 我想了解如何使我的编译可定制 我在不同的地方读到CFLAGS CCFLAGS and CXXFLAGS用于此目的 那么我应该如何使用它们呢 如果我有额外的命令行参数给编译器 我应该将它们附加
  • 将结构写入 csv 文件

    将结构转储到提供的 csv 文件中的惯用 golang 方法是什么 我位于一个 func 中 其中我的结构作为 interface 传递 func decode and csv my response http Response my st
  • RoboGuice 3.0 NoClassDefFoundError:AnnotationDatabaseImpl

    由于某种原因 RoboBlender 不会生成注释数据库 我的 build gradle 具有以下依赖项 dependencies provided org roboguice roboblender 3 0 compile fileTre
  • 有没有一种简单的方法可以清除C中的管道

    我有一个所有子进程都使用的管道 但在子进程使用该管道与父进程通信之前 我需要清除它 以便父进程正确读取它 C 中有一个简单的函数可以做到这一点吗 清除 管道的方法是从管道中读取数据 直到缓冲区为空 这对你没有帮助 我猜测您真正的问题是父级可
  • 如何用一个值函数设置多个属性?

    给定包含多个数据元素的数据 例如对象或数组 是否可以使用单个值函数在选择上设置多个属性 例如 就像是 var data x 10 y 20 r 5 d3 select body append svg selectAll circle dat
  • 当单击网格上的任何其他单元格时,Ag Grid 会停止编辑单元格。如何防止这种情况发生?

    我有一个 Ag 网格fullRow编辑功能 当出现以下情况时 该行进入编辑模式 Edit单击按钮 使用startEditing 网格法 在编辑模式下 我显示两个按钮 Save and Cancel 我找到了抑制键盘事件 Enter Esc
  • 如何为 Windows 创建一个强大的、最小的安装程序? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想创建一个具有一些特定属性的安装程序 EXE 它应该是一个单一的exe文件 它应该是健壮的 即该技术应该可以在任何 Windows
  • Qmake 不使用 stdc++11 编译标志

    当我尝试编译我的项目时 出现以下错误 g c pipe std c 11 O2 g pipe Wall Werror format security Wp D FORTIFY SOURCE 2 fstack protector strong
  • 有没有有效的方法使用Android Studio模拟器测试华为应用商店的应用程序?

    我想知道是否有任何有效的方法可以使用Android Studio模拟器测试华为商店的应用程序 我尝试禁用 Google Play 服务 但由于某种原因 Retrofit 请求停止工作 您可以使用云端调试AppGallery Connect
  • 如何设置Hubot基本权限?

    如何设置基本用户权限 以便用户无法运行 Hubot die 或 Hubot show storage 等命令 我可以看到有一个名为 hubot auth 的脚本 但这似乎是为了在其他脚本中实现它 而不是控制现有命令 有一个小章节关于它使用
  • 如何在画布上制作自定义可编辑文本框,背景随文本一起传播?

    我没有在flutter中使用过canvas 但我认为像图像中的编辑文本框可以通过canvas来实现 背景随着文本长度而扩展 如果一行中的文本长度为 0 则没有背景 如果您有任何代码或建议可以这样做 请提供帮助 这里是代码 class Tex
  • 由 Peer pymongo 重置连接

    我有一些文档 我必须从 mongodb 获取并将其设置到 memcache 这是代码 import memcache from pymongo import MongoClient db mongo client job db JobPar
  • 如何在训练自动编码器(回调)期间将keras中的输入随机设置为零?

    我正在联合训练具有 2 个独立输入路径的 2 个自动编码器 并且我想将其中一个输入路径随机设置为零 我将 Tensorflow 与 keras 后端 功能 API 一起使用 我正在计算反向传播的联合损失 两个损失的总和 A gt A B g