Pytorch 尝试使用nn.Dataparallel并行化数据后遇到问题

Pytorch 尝试使用nn.Dataparallel并行化数据后遇到问题,pytorch,typeerror,Pytorch,Typeerror,在没有数据并行化的情况下,我没有任何问题,但是在我只放置了一行model=nn.DataParallelmodel之后,错误消息TypeError:“list”对象不可调用。如果我把那条该死的线推出去,源头就干净了。请帮帮我 我除了生气什么也做不了。我在谷歌上搜索,有一些方法可以解决这个错误信息,但我什么也做不了。因为nn.Dataparallel已经被其他编码器使用了。对不起,英语不是我的母语 if use_cuda: [[[model = nn.DataPar

在没有数据并行化的情况下,我没有任何问题,但是在我只放置了一行model=nn.DataParallelmodel之后,错误消息TypeError:“list”对象不可调用。如果我把那条该死的线推出去,源头就干净了。请帮帮我

我除了生气什么也做不了。我在谷歌上搜索,有一些方法可以解决这个错误信息,但我什么也做不了。因为nn.Dataparallel已经被其他编码器使用了。对不起,英语不是我的母语

    if use_cuda:
            [[[model = nn.DataParallel(model)]]]
            model = model.cuda()
            criterion = criterion.cuda()
            print('cuda is used')
我只是把model=nn.DataParallelmodel放在后面,紧接着就是错误

回溯最近一次呼叫上次: 文件/home/scrcdeep2/YBJ/espnet_imf/Main.py,第119行,在 火车装载机,模型,标准,优化器,使用,预训练=无

文件/home/scrcdeep2/YBJ/espnet_imf/Main.py,83号线,列车中 输出=模型输入

文件/home/scrcdeep2/YBJ/lib/python3.5/site-packages/torch/nn/modules/module.py,第493行,呼叫中 结果=自我转发*输入,**kwargs 文件/home/scrcdeep2/YBJ/lib/python3.5/site-packages/torch/nn/parallel/data_parallel.py,第151行,向前 副本=self.replicateself.module,self.device_id[:plianput]

文件/home/scrcdeep2/YBJ/lib/python3.5/site-packages/torch/nn/parallel/data_parallel.py,第156行,复制 返回复制模块,设备\u ID

文件/home/scrcdeep2/YBJ/lib/python3.5/site-packages/torch/nn/parallel/replicate.py,第114行,在replicate中 modules=listnetwork.modules

TypeError:“列表”对象不可调用


我遇到了同样的问题,因为我设置了moules=[list]

我更改了代码,如下所示:

def __init__(self, embedding_size, activation_function='relu'):
    super().__init__()
    self.act_fn = getattr(F, activation_function)
    self.embedding_size = embedding_size
    self.conv1 = nn.Conv2d(3, 32, 4, stride=2)
    self.conv2 = nn.Conv2d(32, 64, 4, stride=2)
    self.conv3 = nn.Conv2d(64, 128, 4, stride=2)
    self.conv4 = nn.Conv2d(128, 256, 4, stride=2)
    self.fc = nn.Identity() if embedding_size == 1024 else nn.Linear(1024, embedding_size)
    if not args.MultiGPU:
      self.modules = [self.conv1, self.conv2, self.conv3, self.conv4]

这意味着nn.DataParallel不是一个函数,而是一个列表。通过打印列表进行调查,查看nn对象文档/源代码等。。。我不明白你到底说了什么。你能给我举个简单的例子吗?在pytorch文档中,没有我想知道的。我需要添加更多代码来并行化数据吗?看看这确实是一个函数。在尝试调用DataParallel之前,是否可以编辑您的帖子以添加printtypenn.DataParallel的结果调用此命令?同样做x=fx似乎也有嫌疑。已经出来了。你说x=fx似乎是错的,但几乎每个例子都和我一样。再次感谢您的回答,并为我的简短英语感到抱歉。好的,我会再查一下那个医生。看你的个人资料,我知道你是学生,所以也许你应该问老师或其他学生?我不是Pytork的专家,因此我恐怕无法提供更多帮助。