明天呐 2024-07-02 12:30 采纳率: 0%
浏览 14
已结题

没有解决没有用问题编辑了

以下内容包括三部分:1.报错内容 2.train.py 3.Model.py
我在下采样之后添加了出现了以下报错,我尝试在foward中将张量移到同一设备,没有解决该问题,请教一下帮忙看看,谢谢
1.报错内容:

Traceback (most recent call last):
  File "train.py", line 97, in <module>
    cd_preds = model(batch_img1, batch_img2)
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/module.py", line 744, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/opt/data/private/lizihao/HWTNet/models/Models.py", line 325, in forward
    x0_0A = self.h0(x0_0A)   # 添加半小波变换
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/module.py", line 744, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/opt/data/private/lizihao/HWTNet/models/Models.py", line 248, in forward
    out = torch.cat([wavelet_path, identity_path], dim=1)
RuntimeError: All input tensors must be on the same device. Received cpu and cuda:0

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-02 12:30
    关注

    引自免费微信小程序:皆我百晓生

    你的错误提示是“All input tensors must be on the same device. Received cpu and cuda:0”,这表示你在模型的前向传播过程中,有些张量在CPU上,有些在GPU上,这会导致计算出错。

    从报错信息来看,问题出现在Models.py文件的forward方法中,特别是在x0_0A = self.h0(x0_0A)这一行。由于x0_0Aself.h0可能不在同一个设备上,所以出现了这个错误。

    为了解决这个问题,你需要确保所有的张量都在同一个设备上。你可以使用.to(device)方法将张量移动到指定的设备上。在你的train.py文件中,你已经定义了一个设备变量dev,你可以使用这个变量来确保所有的张量都在同一个设备上。

    Models.pyforward方法中,你需要确保x0_0Aself.h0都在同一个设备上。你可以通过以下方式实现:

    def forward(self, xA, xB):
        # 确保张量都在同一个设备上
        xA = xA.to(self.device)
        xB = xB.to(self.device)
        
        # ...
        x0_0A = self.h0(xA)
        # ...
    end
    

    然后在类的构造函数中设置设备:

    def __init__(self, in_ch=3, out_ch=2):
        super(SNUNet_ECAM, self).__init__()
        # ...
        self.device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
        # ...
    end
    

    另外,你可能需要确保模型的所有其他部分(例如self.h0)都在同一个设备上。你可以通过以下方式实现:

    self.h0 = HWAB(filters[0], filters[0]).to(self.device)
    # ...
    

    这样,所有的张量和模型参数都会在同一个设备上,从而避免了设备不匹配的问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月3日
  • 修改了问题 7月2日
  • 创建了问题 7月2日