如何实现“梯度逆转层”?

11视图(30天)
珀西胡
珀西胡 2021年6月16日
评论道: 珀西胡2021年6月25日
我怎么能完成的 梯度逆转层 在matlab pytorch或tensorflow吗?
通常用于传输学习网络GAN-like损失时采用。
我能意识到它通过定义一个自定义层吗?
非常感激如果你能提供一些详细的建议的一个例子。谢谢你的帮助。
2的评论
珀西胡
珀西胡 2021年6月16日
编辑:珀西胡 2021年6月16日
梯度逆转层没有与之关联的参数。在向前传播,GRL充当恒等变换。然而,在反向传播GRL需要后续的水平和变化的梯度信号,即。,乘以1,之前将它传递给前面的层。使用现有的面向对象实现这样的一层包深度学习很简单,只需要到沙丘向前传播的程序(恒等变换)和反向传播(乘以1)。层不需要参数更新。

登录置评。

接受的答案

菲利普•布朗
菲利普•布朗 2021年6月21日
看起来你应该能够做到这一点 编写自己的自定义层 。看到一些代码的“过渡层模板”开始。
有一个自定义层用于可视化例子做一些类似(修改ReLU梯度的行为), 在这里
我认为你需要的自定义层代码看起来像这样:
classdefGradientReversalLayer < nnet.layer.Layer
方法
函数Z =预测(层,X)
Z = X;%的身份
结束
函数dLdX =向后(层,X, dLdZ)
dLdX = -dLdZ;%反梯度
结束
结束
结束
如果你想定义常数多个梯度,可以使它的属性自定义图层,包括你 落后的 函数。
1评论
珀西胡
珀西胡 2021年6月25日
非常感谢你的帮助。这真的是你的详细解释。我希望您的回答将帮助更多的人。

登录置评。

更多的答案(0)

s manbetx 845


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!