How is this cyclegan generator layers ordered?
3 views (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:
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!
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.