How to change the generator output size
3 次查看(过去 30 天)
显示 更早的评论
I am trying to design a GAN using the example provided by matlab, however the data I'm using to train it are 150x105 grayscal images and in the example they are using 64x64 rgb. Could anyone sugest how can I change the output of the generator to 150x105 here? From what i understood, it's doable by eitheer changing the projectionSize or doing something witht the last convolution layer, yet isn't clear what exacly. If this could help, here's the tutorial link : https://ch.mathworks.com/help/deeplearning/ug/train-generative-adversarial-network.html
filterSize = 5;
numFilters = 32;
numLatentInputs = 100;
projectionSize = [4 4 512];
layersGenerator = [
featureInputLayer(numLatentInputs, 'Normalization', 'none')
projectAndReshapeLayer(projectionSize)
transposedConv2dLayer(filterSize, 2*numFilters, 'Name', 'tconv1')
batchNormalizationLayer('Name', 'bn1')
reluLayer
transposedConv2dLayer(filterSize, numFilters, 'Stride', 2, 'Cropping', 'same', 'Name', 'tconv2')
batchNormalizationLayer('Name', 'bn2')
reluLayer
transposedConv2dLayer(filterSize, 1, 'Stride', 2, 'Cropping', 'same', 'Name', 'tconv3')
tanhLayer('Name', 'tanh')];
netG = dlnetwork(layersGenerator);
0 个评论
回答(1 个)
Divyanshu
2023-4-18
One possible approach to change the output size of the generator network can be by changing the ‘projectionSize’ parameter which is given as an input to the function ‘projectAndReshapeLayer’.
You can have a look at the below code:
filterSize = 5;
numFilters = 64;
numLatentInputs = 100;
projectionSize = [150 105 1];
layersGenerator = [
featureInputLayer(numLatentInputs,'Normalization','none')
projectAndReshapeLayer(projectionSize)
transposedConv2dLayer(filterSize,4*numFilters,'Name','tconv1')
batchNormalizationLayer('Name','bn1')
reluLayer
transposedConv2dLayer(filterSize,2*numFilters,Stride=2,Cropping="same")
batchNormalizationLayer
reluLayer
transposedConv2dLayer(filterSize,numFilters,Stride=2,Cropping="same")
batchNormalizationLayer
reluLayer
transposedConv2dLayer(filterSize,3,'Stride',2,Cropping="same")
tanhLayer('Name','tanh')
];
netG = dlnetwork(layersGenerator);
Also, remember to adjust the size of the input noise vector as well and change it according to the new image dimensions 150 * 105. To project and reshape the noise input, use the custom layer projectAndReshapeLayer, attached to the example as a supporting file. To access this layer, open the example as a live script.
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!