Skip to content

PPO代码逻辑问题 #231

@xlyue92

Description

@xlyue92

dragen老师好,老师在写代码时候非常用心了尽可能用丰富的tf2函数和类。
PPO示例里,main()函数主循环部分:
if done:
if len(agent.buffer) >= batch_size:
agent.optimize()
在逻辑上有些问题,因为如果在此次episode当中某次交互done了,但是它存的buffer_size还没有比batch_size大,那在上面条件逻辑下这部分数据就会存在您写的buffer里并且保留到下一个episode交互中,等下一次可以agent.optimize()的时候,你算得discounted returns序列就不满足markov性。这个if逻辑在morvan的PPO里也能看到,他用的是 done or len(agent.buffer) >= batch_size 的逻辑。

谢谢老师,在您写的算法示例启发下非常受教

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions