我使用 PyTorch 已经有一段时间了,正在制作一个通用的 RL 框架。我遇到了是否使用 np.arrays 或张量的问题。
什么时候你不想使用可用的张量?是什么让你选择 numpy 而不是 pytorch?显然张量对于 ML 模型很重要,但是如果您只想进行基本的图像处理或列表操作怎么办?
我很想尽可能使用张量,但不知道有什么陷阱。(图形混乱?内存泄漏??)
例如,我有一个基本未完成的代码片段,用于收集 env 的操作,不确定是否坚持使用 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)