Problem using scalingLayer for shifting actor outputs to desired range

Illustration
yet_hill - 2021-04-15T11:35:11+00:00
Question: Problem using scalingLayer for shifting actor outputs to desired range

Greetings everyone. I want to use scalingLayer to shift my actor network's outputs to desired range. I'm using this reference and the code below :     numObs = 10; numAct = 5; actorLayerSizes = [400 300]; sc = reshape([10, 10, 20, 15, 15], [1 1 5]); bias = reshape([0, 0, 0, 0, 0], [1 1 5]); actorNetwork = [ imageInputLayer([numObs 1 1],'Normalization','none','Name','observation') fullyConnectedLayer(actorLayerSizes(1), 'Name', 'ActorFC1') reluLayer('Name', 'ActorRelu1') fullyConnectedLayer(actorLayerSizes(2), 'Name', 'ActorFC2') reluLayer('Name', 'ActorRelu2') fullyConnectedLayer(numAct, 'Name', 'ActorFC3') tanhLayer('Name','ActorTanh1'), ... scalingLayer('Scale',sc, 'Bias',bias) ]; I'm getting the error below: Error using vertcat Dimensions of arrays being concatenated are not consistent. Can anyone help me with this?

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

If you remove ',...' from the 'tanh' row the error goes away. The way you have it now, you are adding the scaling layer in the same row as tanh whereas it should be in its own row.
 
 
actorNetwork = [
    imageInputLayer([numObs 1 1],'Normalization','none','Name','observation')
    fullyConnectedLayer(actorLayerSizes(1), 'Name', 'ActorFC1')
    reluLayer('Name', 'ActorRelu1')
    fullyConnectedLayer(actorLayerSizes(2), 'Name', 'ActorFC2')
    reluLayer('Name', 'ActorRelu2')
    fullyConnectedLayer(numAct, 'Name', 'ActorFC3')                       
    tanhLayer('Name','ActorTanh1')
    scalingLayer('Scale',sc, 'Bias',bias)
    ];


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!