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?
Thanks

3 commentaires

Which agent are you using? Depending on the agent, the actor architecture may change.
I'm using DDPG agent for this problem
@Emmanouil Tzorakoleftherakis Any ideas how to fix this my friend?

Connectez-vous pour commenter.

 Réponse acceptée

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)
];

Plus de réponses (0)

Catégories

En savoir plus sur Deep Learning Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by