pytorch中如何实现多模型的并联

634 次浏览0个评论2021年09月15日
自己准备设计一个模型结构,大概思路是有N个同样序列(N大概几百,随数据集不同而不同)分别输入至一个lstm中,这N个lstm输出后通过一个全连接层得到总输出。在实现过程中,如何动态的生成这N个lstm模型? 我开始时的思路如下: classTestModel1(nn.Modu

自己准备设计一个模型结构,大概思路是有N个同样序列(N大概几百,随数据集不同而不同)分别输入至一个lstm中,这N个lstm输出后通过一个全连接层得到总输出。在实现过程中,如何动态的生成这N个lstm模型? 我开始时的思路如下:

class TestModel1(nn.Module):
    def __init__(self,node_num):
        super(TestModel1,self).__init__()
        self.lstmlist = [None] * node_num
        for i in range(node_num):
            self.lstmlist[i] = nn.LSTM(30,100,2)
        self.act = nn.ReLU()
        self.linear = nn.Linear(1000*node_num,10)
    def forward(self, data):
        pass

但是这里面的lstmlist里面的模型是无法识别的,比如执行下面代码:

mynet = TestModel1(node_num=100)
print(list(mynet.named_parameters()))

只会输出self.linear的参数,没有self.lstmlist的参数。我感觉应该是list本身无法传递梯度,所以self.lstmlist中的变量并不可见。

请问大神们,类似于这种多个模型并联应该如何实现?

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...

    公告提示

    Pytorch是Facebook的AI研究团队发布了一个Python工具包,是Python优先的深度学习框架。作为numpy的替代品;使用强大的GPU能力,提供最大的灵活性和速度,实现了机器学习框架Torch在Python语言环境的执行,基于python且具备强大GPU加速的张量和动态神经网络。