使用从另一个(PyTorch)向后的渐变优化网络

时间:2018-12-27 04:19:54

标签: pytorch backpropagation

我正在使用强化学习来训练两个网络,一个是演员网络,标记为u,另一个是评论家网络,标记为

actor网络u接收输入,并产生actor张量。例如,我们-> a。 Q收到相同的输入,加上在上一步中产生的actor张量u。并产生一个分数。 像Q(s,a)-> q

现在我正在这两个网络上进行反向传播。为了优化u,公式为: enter image description here

    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()操作。这里的逻辑正确吗?

0 个答案:

没有答案