UserWarning:WARN:Box-bound精度因强制转换到float32而降低

2024-09-28 22:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我不断地犯这个错误

UserWarning: WARN: Box bound precision lowered by casting to float32
  warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))

当我开始训练时。我猜是从这一行传来的

self.action_space = spaces.Box(low, high)

代码正在运行,但我想阻止出现此错误

我正在使用cuda pc运行代码


Tags: to代码boxby错误precisionwarnbound
2条回答

只需将传递给Box的值的数据类型强制转换为float32

self.action_space = spaces.Box(np.float32(low), np.float32(high))

例如,所有这些示例都是有效的:

self.action_space = spaces.Box(np.float32(3), np.float32(4.0))

self.action_space = spaces.Box(np.float32(np.array([3.0,3.5])), np.float32(np.array([4.0,4.5])))

self.action_space = spaces.Box(np.array([3.0,3.5],dtype=np.float32), np.array([4.0,4.5],dtype=np.float32))

顺便说一下:虽然您也可以像@Robert Wilkerson所建议的那样将Box-dtype本身显式地强制转换为np.float32,但是没有必要这样做:它不能解决问题,而且它没有任何效果,因为Boxdtype已经默认为np.float32

在调用中显式地将dtype指定为float32,就像这样

self.action_space = spaces.Box(low, high, dtype=np.float32)

如果这不起作用,那么在健身房将记录器级别设置得更低,就像这样

import gym
gym.logger.set_level(40)

相关问题 更多 >