【问题标题】:How update weights of two separate neural network with a computed loss?如何使用计算的损失更新两个独立神经网络的权重?
【发布时间】:2020-03-23 14:52:18
【问题描述】:

我有一个编码器和一个代理网络,可以帮助编码器最大化其输入(图像)和输出(图像的特征向量)之间的信息。为了完成这项工作,我使用了一个估计 MI 的损失函数,并通过优化器使用计算的损失更新了两个网络的权重,但我不确定这是否正确完成。我使用了以下代码(在 pytorch 中):

# Clear the previous gradients
discriminator_net_optim.zero_grad()
encoder_net_optim.zero_grad()

autograd.backward(loss)

torch.nn.utils.clip_grad_norm_(discriminator.parameters(), 2)
torch.nn.utils.clip_grad_norm_(encoder.parameters(), 2)

# adjust weights in discriminator and encoder
discriminator_net_optim.step()
encoder_net_optim.step()

感谢任何帮助或建议。

【问题讨论】:

    标签: deep-learning pytorch information-theory


    【解决方案1】:

    如果您有多个网络,这是它们如何训练的示例

    encoder = Encoder(args).to(device)
    decoder = Decoder(args).to(device)
    
    params = list(encoder.parameters()) + list(decoder.parameters())
    optimizer = torch.optim.Adam(params, learning_rate)
    

    每个批次都会调用这个:

     optimizer.zero_grad()
     loss.backward()
     optimizer.step()
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2019-01-23
      • 2018-09-28
      • 2015-05-03
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      相关资源
      最近更新 更多