Scaling layer usage for action output
    1 view (last 30 days)
  
       Show older comments
    
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
    
 on 20 Jun 2023
				I corrected the answer, you are right, the scale factor should be divided by 2
Answers (0)
See Also
Categories
				Find more on Introduction to Installation and Licensing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
