我正在将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

08-20 01:33