pytorch报错ValueError: too many values to unpack (expected 4)

初学者在运行强化学习代码时遇到env.step()返回值增加为5个的问题,导致在Pendulum-v1环境中,terminated长时间不为True造成死循环。而在CartPole环境中,terminated作为终止条件则有效。作者通过打印和尝试发现,truncated可能是更好的终止条件选择,但是否通用仍有疑问,期待讨论。
摘要由CSDN通过智能技术生成

初学强化学习,跑用例代码时发现报错,网上试过很多方案解决不了,后面参考这篇博客( https://blog.csdn.net/Er_Studying_Bai/article/details/127441552)才知道 env.step() 的返回值由 4 个变为了 5 个,说明如下

虽然英文完全看得懂,但是连在一起关于terminated, truncated就让人有点不知所措了 

在多次尝试后,发现在倒立摆(Pendulum-v1)游戏中,teminated长时间都不能为 True,如果用下面的代码就会导致死循环

# 之前的代码
while True:
    action = self.get_action(state)

    # 执行动作, 得到反馈
    state, reward, terminated, trucated, _ = env.step([action])
    # print(terminated, truncated)

    #### 处理过程略

    # 这里通过循环打印发现 terminated 不能作为终止条件
    if terminated:
        break
但是如果我们把 if terminated 改为 if truncated,反而能达到我们预期的效果。

但在别的游戏,比如平衡车(CartPole),用 terminated 确能够很成功。

所以我个人都是通过print打印,再选择终止条件的,有没有大佬指点或者讨论一下。

或许取它们任意一个作为终止条件是最佳选择?(个人猜想)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值