当前位置:网站首页>pytorch:关于GradReverseLayer实现的一个坑
pytorch:关于GradReverseLayer实现的一个坑
2022-04-23 06:16:00 【清三】
最近在做一个domain adaptation的项目,用到了gradreverselayer:`class GradReverse(Function):
def forward(ctx, x, alpha, **kwargs:None):
ctx.alpha = alpha
return x.view_as(x)
def backward(ctx, grad_output):
output = grad_output * -ctx.alpha
return output, None
看起来没有问题,但是一直报错:
我搞了好久都没搞定,于是做了个愚蠢的决定,我加了一个:
src_domain_loss=torch.tensor(src_domain_loss, requires_grad=True)
结果错误居然消失了,我就乐呵呵地用了这个傻*代码用了两个月,结果实验结果一直不理想,直到今天检查训练梯度,发现梯度一直是零!!!
无语子,肯定是这段代码的锅,但是没有它就会报错,我搜遍了网络的每一个角落,都没有发现解决办法,还付费向人咨询了(哭)。
结果,灵光一闪,发现我梯度翻转层的代码少了些什么:
class GradReverse(Function):
@staticmethod
def forward(ctx, x, alpha, **kwargs:None):
ctx.alpha = alpha
return x.view_as(x)
@staticmethod
def backward(ctx, grad_output):
output = grad_output * -ctx.alpha
return output, None`
发现了吗?@staticmethod!!!我一直以为这是一段注释,直接删掉了,大无语事件,气死!!!
其实这是在声明一个静态方法!
希望各位引以为戒。(哭)
版权声明
本文为[清三]所创,转载请带上原文链接,感谢
https://blog.csdn.net/supermarian/article/details/115254187
边栏推荐
猜你喜欢
基于51单片机的体脂检测系统设计(51+oled+hx711+us100)
hql求一个范围内最大值
以智能生产引领行业风潮!美摄智能视频生产平台亮相2021世界超高清视频产业发展大会
CMSIS CM3源码注解
【无标题】制作一个0-99的计数器,P1.7接按键,P2接数码管段,共阳极数码管,P3.0,P3.1接数码管位码,每按一次键,数码管显示加一。请写出单片机的C51代码
ARMCC/GCC下的stack protector
基于openmv的无人机Apriltag动态追踪降落完整项目资料(labview+openmv+apriltag+正点原子四轴)
主流 RTOS 评估
AUTOSAR从入门到精通100讲(八十一)-AUTOSAR基础篇之FiM
记录阿里云服务器挖矿程序处理
随机推荐
《Attention in Natural Language Processing》翻译
商业版阿里MQ普通消息发送订阅Demo
golang实现一个带Web界面的五险一金计算器
免费开源充电桩物联网云平台
Intelligent communication solution of Hainan Phoenix Airport
Hanlp分词器(通过spark)
各类日期转化的utils
【无标题】PID控制TT编码器电机
armv8m(cortex m33) MPU实战
吴恩达编程作业——Logistic Regression with a Neural Network mindset
PyTorch 10. Learning rate
hql求一个范围内最大值
ARMCC/GCC下的stack protector
pth 转 onnx 时出现的 gather、unsqueeze 等算子
广西电网|应急空天一体化通信系统方案
无盲区、长续航|公专融合对讲机如何提升酒店服务效率?
SHA512/384 原理及C语言实现(附源码)
Systrace 解析
SQL练习第一题
北峰油气田自组网无线通信对讲系统解决方案