我已经使用PyTorch一段时间了,并且正在制作一个通用的RL框架。我遇到了要使用np.arrays还是张量的问题。
什么时候不希望使用张量?是什么让您选择numpy而不是pytorch?张量对于ML模型显然很重要,但是如果您只想进行基本的图像处理或列表处理,该怎么办?
我很想尽可能使用Tensors,但不知道有任何陷阱。 (图形混乱?内存泄漏?)
例如,我有一个基本的未完成代码段,用于收集环境的动作,不确定是否坚持使用numpy。
@dataclass
class Action(object):
"""
Handles actions, action space, and value verification.
"""
taken_action: np.array
raw_action: np.array
n_possible_values: int
action_space: gym.Space
def __post_init__(self):
if type(self.taken_action) is not np.array: taken_action = np.array([self.taken_action])
@pytest.mark.parametrize("env", sorted([env.id for env in gym.envs.registry.all()]))
def test_action_data_structure(env):
try:
init_env = gym.make(env)
except error.DependencyNotInstalled as e:
print(e)
return
taken_action = init_env.action_space.sample()
raw_action = np.random.rand(init_env.action_space.n)
state, reward, done, info = init_env.step(taken_action)
action_dataclass = Action(taken_action=taken_action, raw_action=raw_action,
n_possible_values=init_env.action_space.n, action_space=init_env.action_space)