python - 如何使用 Pytorch 实现强化学习代理以在不同的时间步执行操作
问题描述
我想知道您将如何更改代理与环境交互的频率。查看以前的自定义环境和健身房环境,看起来代理与每个时间步长的环境交互。出于我的目的,我希望我的代理每集与环境交互一次。
它看起来TensorFlow
有一个内置函数来适应代理与环境交互的频率。请参阅以下代码作为示例。
env = suite_gym.load('CartPole-v0')
tf_env = tf_py_environment.TFPyEnvironment(env)
time_step = tf_env.reset()
rewards = []
steps = []
num_episodes = 5
for _ in range(num_episodes):
episode_reward = 0
episode_steps = 0
while not time_step.is_last():
action = tf.random.uniform([1], 0, 2, dtype=tf.int32)
time_step = tf_env.step(action)
episode_steps += 1
episode_reward += time_step.reward.numpy()
rewards.append(episode_reward)
steps.append(episode_steps)
time_step = tf_env.reset()
num_steps = np.sum(steps)
avg_length = np.mean(steps)
avg_reward = np.mean(rewards)
print('num_episodes:', num_episodes, 'num_steps:', num_steps)
print('avg_length', avg_length, 'avg_reward:', avg_reward)
所以我想知道 PyTorch 是否有类似的功能?如果没有,我想我需要重做我的自定义环境以适应不同的时间步长?
解决方案
推荐阅读
- java - 给出错误结果的子列表的Java反向顺序
- java - 名称不同但方法名称相同的Spring @Bean抛出Bean创建异常
- javascript - 让 TradingView 轻量级图表兑现 setVisibleRange 比数据集更宽
- intel - 在两个屏幕中复制桌面不起作用
- cqrs - 控制器级别的 CQRS 和共享逻辑
- laravel - Laravel 多类
- c - 为什么在收到 SIGINT 后没有阻塞 read() 中断?
- parse-platform - Back4App安全权限默认选为public
- javascript - JavaScript 获取两个数组中的公共元素
- excel - Excel vba 过滤表 BodyRange 不正确 SpecialCells