How is this cyclegan generator layers ordered?

1 view (last 30 days)
A cyclegan example (https://www.mathworks.com/matlabcentral/fileexchange/76986-image-domain-conversion-using-cyclegan?s_tid=srchtitle) is very interesting. But I have trouble to understand the integration of the generator layers:
% integrate
lgraph = lgraph2; % Residual Blocks
lgraph = addLayers(lgraph,layers1); % Encoder
lgraph = addLayers(lgraph,layers3); % Decoder
The order of the code doesn't seem to match the design (as above picture) and the plot(lgraph) doesn't work here to see the layer structure. Placing the layers1 at the begining doesn't work. Yes, layers1 = [imageInputLayer(...)] indicated the imageinputlayer but does the lgraph2 = layerGraph() indicate the start of the layerGraph?
Hope you can help to clarify it in order to fully understand those matlab functions involved and design correctly layers. Thank you!

Accepted Answer

Sahil Jain
Sahil Jain on 19 Oct 2021
The two calls to "addLayer" only add the encoder and decoder parts to the graph without connecting them with the residual blocks. In the original code, there are three calls to the "connectLayers" function after the "integrate" snippet which you have shared. These calls join the encoder, residual blocks and decoders in the appropriate order. I am attaching a file ("generator.m") which you can run to visualize how the graph changes with the "addLayers" and "connectLayers" function calls.

More Answers (1)

John
John on 1 Nov 2021
Thank you Sahil Jain!
Also, the filter size in the script is fixed to [4,4], changing it will cause error and it made me completely lost. Hope you can point out the trick and guid me to change the filter size.
Best,
John

Categories

Find more on Image Data Workflows in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!