写在前面:本文纯属个人项目需用到GRL,特此记录调试过程的一些经验,如有问题欢迎指正。
本文不对GRL做介绍,了解学习概念可往:GRL (其中第二高赞的问题令人深思,个人觉得很有道理)
下面进如正文:

  1. 验证分类器有效:在调试GRL前,先单独对分类器进行训练,确保网络能够进行分类;
  2. 验证GRL是否工作:在输出结果层(最后一层)后面加上GRL,令整个梯度都是反向的,并且将GRL参数设置为常数1,观察训练loss是否越来越大;
  3. 以上功能确保正常后,即可将GRL加到网络进行训练。理想的网络分类器损失先下降后增加的趋势,最后网络无法对其分类。
    然而,实验中出现了分类器损失一直保持不变,既开始分类器一直学不到东西,通过修改学习率、优化器等皆无果,后面想起GRL还有一个参数,对其进行调整,网络终于开始能学着分类。所以很重要的是GRL的参数α\alphaα(既反向梯度所乘系数),我采用的是原论文的系数设置,随着迭代次数的增加,α\alphaα由0增加到1。但是在调试时,发现α\alphaα设置为0.001是能满足前面第3点提到的趋势,大一点则损失不降,因此最后设置是α\alphaα由0增加到0.002。所以不止分类器和GRL是否有效工作很重要,GRL的参数α\alphaα也很重要,但发现分类器损失一动不动时,试着把α\alphaα减小一个数量级在跑跑看。

题外话:在调试时,可以选择val set或者少量数据进行训练,这样更快能看出方法是否有效,而不是一整个数据集丢进去跑,太浪费时间了!毕竟迭代的次数多了,才能看得出网络损失的趋势。同时,在进行实验时,一定要对数据集和标签进行可视化(我做的是图像的目标检测),粗略的过一遍,确保数据集的处理没有问题。
做了好几个项目,还总是没有吸取教训,希望说的点能帮到大家。

【领域适应】训练梯度反向层(gradient reversl layer, GRL)相关推荐

  1. pytorch实现梯度反转层(Gradient Reversal Layer)(正确代码)

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  2. 【深度域适配】一、DANN与梯度反转层(GRL)详解

    CSDN博客原文链接:https://blog.csdn.net/qq_30091945/article/details/104478550 知乎专栏原文链接:https://zhuanlan.zhi ...

  3. 【深度域自适应】一、DANN与梯度反转层(GRL)详解

    前言 在当前人工智能的如火如荼在各行各业得到广泛应用,尤其是人工智能也因此从各个方面影响当前人们的衣食住行等日常生活.这背后的原因都是因为如CNN.RNN.LSTM和GAN等各种深度神经网络的强大性能 ...

  4. 笔记: Gradient Reversal Layer (unsupervised domain adaptation by backpropagation. ICML 2015)

    paper: Ganin, Yaroslav, and Victor Lempitsky. "Unsupervised domain adaptation by backpropagatio ...

  5. [Tensorflow2] 梯度反转层(GRL)与域对抗训练神经网络(DANN)的实现

    文章目录 概述 原理回顾 (可跳过) GRL 层实现 使用 GRL 的域对抗(DANN)模型实现 DANN 的使用案例 !!! 后记 概述 域对抗训练(Domain-Adversarial Train ...

  6. 【调参19】如何使用梯度裁剪(Gradient Clipping)避免梯度爆炸

    文章目录 1. 梯度爆炸和裁剪 2. TensorFlow.Keras 实现 2.1 梯度范数缩放(Gradient Norm Scaling) 2.2 梯度值裁剪(Gradient Value Cl ...

  7. 《预训练周刊》第40期: 量子预训练、千层BERT与GPT

    No.40 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...

  8. 梯度反向传播求解示例

    深度学习中进行网络的训练的时候,常常采用梯度反向传递的方式对网络中的参数进行调整,那么具体是怎么实现的呢?我用一个简单的例子进行推导求解. 如下图,这里采用的是两层网络,损失函数采用的是平方差损失函数 ...

  9. 50行代码,带你理解梯度下降法(Gradient Descent Method)

    梯度下降法是一种常见的优化算法,在机器学习中应用很广泛.本文从代码的角度,带你理解梯度下降法. 优化算法 优化指的是改变x以最小化或最大化某个函数 f(x) 的任务.通常以最小化 f(x) 指代大多数 ...

  10. 【深度域自适应】DANN梯度反转层(GRL)理解

    加入GRL的目的是为了让领域判别器和特征提取器之间形成一种对抗.先不管标签分类器,领域判别器就是GAN里的判别器,目的就是区分出real(目标域)与fake(源域),所以领域判别器的目的同样也是最小化 ...

最新文章

  1. 董彬教授:用深度神经网络学习偏微分方程及其数值求解的离散格式
  2. Django实现任意文件上传(最简单的方法)
  3. PHP实现四位数字+字母验证码
  4. 二等水准测量记录数据_公路水准测量培训道路放样测量学习
  5. tensorflow图像分割unet_AAAI2020 | 医学图像分割的Nonlocal UNets
  6. 01-申明变量及变量命名
  7. 精心整理 25 个 Python 文本处理案例,收藏!
  8. 带码农《手写Mybatis》进度3:实现映射器的注册和使用
  9. 更改阿里云域名解析台里某个域名绑定的IP之后不能解析到新IP
  10. 一张图片分成两张matlab,matlab – 两幅图像之间的相似度量
  11. php 搭建laravel,laravel框架_搭建php Laravel框架教程详解
  12. linux flash文件系统,需要了解Linux flash文件系统
  13. c语言判断算符优先级,C语言算符优先级(精华)
  14. vs2019豆沙绿背景色及consolas字体设置
  15. 技术族谱:预告片的制作思路
  16. poj 1703 poj 2492 并查集 桥梁判AB组
  17. 【Devc++】战斗1.0.2
  18. 小米红米4(标准版)解BL锁教程申请BootLoader解锁教程
  19. 几个在线文档接口生成工具
  20. 打开Flutter动画的另一种姿势——Flare

热门文章

  1. 第四季-专题2-U-Boot新手入门
  2. jQuery事件委托
  3. Engineer05
  4. Android复习强化笔记(二)
  5. postgres-xc postgres 分布式数据库的一种
  6. 修改浏览器 User-Agent
  7. 第五章 字符串字面量---一个特殊的数组
  8. 淘宝 封住baidu的蜘蛛了吗?
  9. python 函数篇(2)
  10. bzoj 1556 墓地秘密 —— 状压DP