Hello,
I am trying to train this network:
layers = layerGraph([ ...
    imageInputLayer([1,1,128],"Name",'imgIn',"Normalization","none")
    fullyConnectedLayer(256,'Name','bufferFc') 
    leakyReluLayer(0.01,"Name",'leakyrelu')
    batchNormalizationLayer("Name",'batchnorm')
    fullyConnectedLayer(128,'Name','fc_decoder1') 
    leakyReluLayer(0.01,"Name",'leakyrelu_1')
    batchNormalizationLayer("Name",'batchnorm_1')
    fullyConnectedLayer(1024,'Name','fc_decoder2') 
    leakyReluLayer(0.01,"Name",'leakyrelu_2')
    batchNormalizationLayer("Name",'batchnorm_2')
    transposedConv2dLayer(1,512,"Stride",2,"Name",'transpose_conv_7') ...
    ])
The annoying part is that this network is valid; these layers are part of a bigger network, which I am trying to split into two networks (encoder-decoder). I only added an "imageInputLayer" and one fully connected layer.
When I analyze the network using "analyzeNetwork(layers)," it checks OK, and the output dimension from the last fully connected layer is [1,1,1024], and also from the following batch normalization and leaky relu layers.
However, when I try to convert this into a dlnetwrok
decoderNet = dlnetwork(layers)
I get this error:
Error using dlnetwork/initialize (line 405)
Invalid network.
Error in dlnetwork (line 191)
                net = initialize(net, dlX{:});
Caused by:
    Layer 'transpose_conv_7': Input size mismatch. Size of input to this layer is different from the expected input
    size.
    Inputs to this layer:
        from layer 'batchnorm_2' (size 1024(C) × 1(B))
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Apparently, the output from the fullyconnected layers lost the space dimensions and only have depth and batch dimensions.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here is a list of things that I tried and didn't work:
- Converting it first to layerGraph
- Use depthToSpace2dLayer(blockSize) with block size [1,1].
- Add a custom layer (AddDim), which creates a new dlarray with the correct dimensions and copy the values - this invoked a different:
                Caused by:
                        Layer 'AddDim': Input size mismatch. Incorrect type of 'Z' for 'predict' in Layer 'addDimLayer'. Expected an
                        unformatted dlarray, but instead was formatted.    
           and when I changes it to unformated dlarray. this was the error:
                Caused by:
                        Layer 'AddDim': Input size mismatch. Size of input to this layer is different from the expected input size.
                        Inputs to this layer:
                        from layer 'batchnorm_2' (size 1024(C) × 1(B))
Thanks in advance