How to Realize 'Gradient Reversal Layer' ?
7 次查看(过去 30 天)
显示 更早的评论
How can i complete a 'Gradient Reversal Layer' in matlab like in pytorch or tensorflow?
It is normally used in transfer learning network when a GAN-like loss is adopted.
Could i realize it by define a custom layer?
It is very grateful if you can offer an example of some detailed advice. Thank you for your help.
采纳的回答
Philip Brown
2021-6-21
It looks like you should be able to do this by writing your own custom layer. See the "Intermediate Layer Template" for some code to get started.
There's a custom layer used in a visualization example which does something a little bit similar (to modify the behavior of a ReLU gradient), here.
I think the custom layer code you need looks something like this:
classdef GradientReversalLayer < nnet.layer.Layer
methods
function Z = predict(layer, X)
Z = X; % Identity
end
function dLdX = backward(layer, X, dLdZ)
dLdX = -dLdZ; % Reverse gradient
end
end
end
If you want to define the constant you multiple the gradient by, you could make it a property of the custom layer and include that in your backward function.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!