诚信为本,市场在变,诚信永远不变...
  咨询电话:400-123-4567

行业新闻

在一个优化器中设置多个网络参数的写法

框架:pytorch

在使用神经网络的时候有时候会将几个不同的神经网络组合,再采用梯度下降更新参数,那么在设置优化器的时候该如何将多个神经网络的参数进行融合呢?目前网络上的大部分信息都是采用Itertools.chain()将参数融合在一起:

 
 

链接
Python Itertools.chain()用法及代码示例
将所有可迭代对象组合在一起,并生成一个可迭代对象作为输出。它的输出不能直接使用,因此不能显式转换为可迭代对象。

 
 

在这里插入图片描述
parameters()函数返回的是一个Module.parameters的对象,实际上相当于参数的容器,而itertools.chain()是将多个模型的参数整合进一个新的容器内。
但是我遇到的一个问题是我的模型的个数不止一个,并且数量是不固定的,而上述方法中又需要把每个模型的参数一一放进itertools.chain()函数中,所以一开始把多个模型的参数统一放进一个列表中,然后把列表传入itertools.chain()函数,但是并不可以,原因是优化器需要传入的参数是一组tensor,但是采用上述方法传入的是Module.parameters的对象,所以此路不通。
考虑到list(net.parameters())实际上就是将Module.parameters解析成模型参数张量的列表,那么直接对参数进行组合:

平台注册入口