我正在使用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
...
提前感谢。
答案 0 :(得分:1)
尝试var actionAC = Mathf.Clamp(act[0], -1, 1);
这可确保actionAC
的值始终在-1和1之间。