Я уже некоторое время использую 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)