我正在使用强化学习来训练两个网络,一个是演员网络,标记为u,另一个是评论家网络,标记为
actor网络u接收输入,并产生actor张量。例如,我们-> a。 Q收到相同的输入,加上在上一步中产生的actor张量u。并产生一个分数。 像Q(s,a)-> q
ce_optimizer = torch.optim.Adam(tn.critic_e.parameters(), lr=tn.LR_C)
ae_optimizer = torch.optim.Adam(tn.actor_e.parameters(), lr=tn.LR_A)
... # optimize the critic network, which is easy
# optimize the actor network
ae_optimizer.zero_grad()
ce_optimizer.zero_grad() # since we optimized critic network in above part,
a_pred = tn.actor_e(patch, hmap)
q_eval = tn.critic_e(patch, hmap, a_pred)
q_eval.backward(torch.tensor([[1.0]]).to(device))
ae_optimizer.step() # note using optimizer for actor network
我正在对u进行向前处理,然后对Q进行反向处理,一旦u获得其毕业证书,就可以简单地使用相应的优化程序来执行step()操作。这里的逻辑正确吗?