Scaling layer usage for action output

7 views (last 30 days)
Yihao Wan
Yihao Wan on 9 Jun 2023
Commented: Yihao Wan on 20 Jun 2023
Hello, I am using the tanhlayer as the output activation function for the action network while my action space is [0,10]. In this sense, I am referring to this answer by adding scaling layer.
However, I got saturated action value. I looked into the answer, shouldn't it be
scalingLayer('Scale',(actionInfo.UpperLimit-actionInfo.LowerLimit)/2,'Bias',(actionInfo.UpperLimit+actionInfo.LowerLimit)/2)
Thanks for your help.
Here is the code"
numActions = 2;
actInfo = rlNumericSpec([numActions 1],'LowerLimit',0,'UpperLimit', 10);
actorNetwork = [
featureInputLayer(numObservations,'Normalization','none','Name','State')
fullyConnectedLayer(32, 'Name','actorFC1')
reluLayer('Name','relu1')
fullyConnectedLayer(16, 'Name','actorFC2')
reluLayer('Name','relu2')
fullyConnectedLayer(numActions,'Name','Action')
tanhLayer('Name','tanh3')
scalingLayer('Scale',actInfo.UpperLimit-actInfo.LowerLimit,'Bias',(actInfo.UpperLimit-actInfo.LowerLimit)/2)
];
actordlNet = dlnetwork(actorNetwork);
actor = rlContinuousDeterministicActor(actordlNet,obsInfo,actInfo);
  5 Comments
Emmanouil Tzorakoleftherakis
I corrected the answer, you are right, the scale factor should be divided by 2

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!