1

我将 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
...

提前致谢。

4

1 回答 1

1

尝试var actionAC = Mathf.Clamp(act[0], -1, 1);

这确保 的值actionAC始终介于 -1 和 1 之间。

https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html

于 2018-12-16T22:42:24.817 回答