限制Unity ML-Agents / Tensorflow

时间:2018-02-07 12:53:39

标签: python unity3d tensorflow

我正在使用Unity与ML-Agents及其PPO实现。

我有一个Action来训练我的神经网络,其Imput为-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
...

提前感谢。

1 个答案:

答案 0 :(得分:1)

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

这可确保actionAC的值始终在-1和1之间。

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