blog
blog copied to clipboard
TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient | 极客兔兔
https://geektutu.com/post/tensorflow2-gym-pg.html
TensorFlow 2.0 入门系列文章,第九篇,使用强化学习算法策略梯度(Policy Gradient),实战 OpenAI gym CartPole,代码仅70行。
博主有时间能写写DDPG算法吗,期待哈哈,感觉您的代码逻辑很强!
@youstick 很高兴得到你的认可 😸,有时间会继续写的~
你好,想问下为什么这里损失函数不用交叉熵sparse_categorical_crossentropy呢
根据论文中的公式policy gradient损失函数不能用简单的mse,而是用交叉熵求对数。 博主写的不错,适合小白入手。然后对比了几个大佬的文章内容后,才搞明白。
想要請問為何程式碼中,訓練模型僅使用當回合的數據,policy gradient 不是要把過去玩的回合的數據一起納入訓練??
while True: a = choose_action(s) next_s, r, done, _ = env.step(a) replay_records.append((s, a, r))
score += r
s = next_s
if done:
train(replay_records)
def train(records): s_batch = np.array([record[0] for record in records]) # action 独热编码处理,方便求动作概率,即 prob_batch a_batch = np.array([[1 if record[1] == i else 0 for i in range(ACTION_DIM)] for record in records]) # 假设predict的概率是 [0.3, 0.7],选择的动作是 [0, 1] # 则动作[0, 1]的概率等于 [0, 0.7] = [0.3, 0.7] * [0, 1] prob_batch = model.predict(s_batch) * a_batch r_batch = discount_rewards([record[2] for record in records])
model.fit(s_batch, prob_batch, sample_weight=r_batch, verbose=0)
是否是因为没有使用记忆回放,推荐你到B站看王树森的深度DRL课程,讲的很清楚。
WY @.***
------------------ 原始邮件 ------------------ 发件人: "geektutu/blog" @.>; 发送时间: 2023年12月29日(星期五) 上午9:34 @.>; @.@.>; 主题: Re: [geektutu/blog] TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient | 极客兔兔 (#19)
想要請問為何程式碼中,訓練模型僅使用當回合的數據,policy gradient 不是要把過去玩的回合的數據一起納入訓練??
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>