给出的示例here分别使用两个优化器encoder
和decoder
。为什么?什么时候这样做?何时在PyTorch中使用单独的优化器?
回答
如果您有多个网络(从多个对象继承nn.Module
),您必须这样做,原因很简单:构建torch.nn.optim.Optimizer
对象时,它将需要优化的参数作为参数。在你的情况下:
encoder_optimizer = optim.Adam(encoder.parameters(), lr=learning_rate)
decoder_optimizer = optim.Adam(decoder.parameters(), lr=learning_rate)
这也给你自由地改变参数作为学习率独立。如果你不需要,你可以创建一个新的类从nn.Module
继承和含两个网络,编码器和解码器或创建一组参数来给优化为解释here:
nets = [encoder, decoder]
parameters = set()
for net in nets:
parameters |= set(net.parameters())
其中|
是在这种情况下集合的联合运算符。
感谢您的回答。那么这是否意味着如果我们只有从'nn.Module'继承的编码器和解码器类,简单地将编码器的隐藏流传送到解码器(例如'enc_out,enc_hidden = encoder(x); dec_out =解码器(y,enc_hidden)')并且只使用一个'optimizer'在这种情况下不起作用? – Edityouprofile
@displayname我不太明白你想要做什么。你能否详细说明你的问题 – McLawrence
抱歉,迟到的回复,我认为你提到的两种方法是标准的方法来做到这一点。 – Edityouprofile
- 1. Pytorch模型的超参数优化
- 2. 如何在Pytorch中简化用于自动编码器的DataLoader
- 3. 如何在代码中使用PyTorch PackedSequence?
- 4. 在tensorflow中使用Adam优化器TWICE
- 5. 如何在Chainer的不同层实现单独的学习率或优化器?
- 6. 使用计数器时优化输出?
- 7. 如何在visual studio中使用优化器和分析器
- 8. 在R中使用优化
- 9. SQLCommand在单独的类中使用时使用参数化sql查询
- 10. 在高编译器优化模式下定时器在msp430中的使用
- 11. 在PyTorch中添加L1/L2正则化?
- 12. 如何优化独特行的搜索?
- 13. 带有单独或单独活动的Tabhost何时使用?
- 14. 在Tensorflow中使用Adadelta优化器时未初始化的值错误
- 15. 在GCC中使用内联ARM汇编时优化使用的寄存器
- 16. 在所有编译器优化禁用时使用volatile
- 17. 使用PyTorch生成LSTM时间序列
- 18. 如何在单独的行上使用“new”初始化数组?
- 19. 如何在使用优化工具时使用输入参数?
- 20. 如何正则单独使用时
- 21. Magento:何时使用Mage :: getResourceModel()单独
- 22. Laravel使用单独的控制器为单独的逻辑
- 23. 使用运行时优化的Javascript
- 24. 无法在WordPress的优化使用EWW优化器(插件)图像
- 25. adam优化器和动量优化器
- 26. 如何在单独的线程中运行计时器?
- 27. 为什么优化器不使用我独特的过滤索引?
- 28. 如何在swift中实现优化多重定时器?
- 29. 使用管道在Linux中的Web服务器优化
- 30. Dymola中的实时优化
如果我的回答对您有帮助,您会考虑标记为已接受,以便问题不再无法解答吗? – McLawrence