我正在将Unity与ML-Agents及其PPO实现一起使用。
我有一个动作来训练我的神经网络,其输入为-1到1。
当我记录操作时,我可以看到网络始终尝试使用550、630,-530等值。
我如何将它们限制为仅使用-1和1之间的值?
我试图在Unity中寻找它。找不到任何选择。
现在,我正在尝试修改PPO算法,但是找不到任何限制我的值的东西。
我的日志记录是这样的:
我的代理具有AgentStep方法:
public override void AgentStep(float[] act){
if (brain.brainParameters.actionSpaceType == StateType.continuous) {
var actionAC = act[0];
float[] toLog = new float[2];
object.move(actionAC);
// some rewards including toLog[0] as reward log
toLog[1] = actionAC;
logger.AddLine(toLog);
}
}
Logger是我编写的仅用于创建csv文件的类。
此输出看起来像:
-1 530.73106
-2 530.73106
...
-234.5 -631.9137
...
提前致谢。
最佳答案
尝试var actionAC = Mathf.Clamp(act[0], -1, 1);
这样可以确保actionAC
的值始终在-1和1之间。
https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html