• 1 关键点在于: AttributeError: ‘Tensor’ object has no attribute 'ndim’
  • Traceback (most recent call last):
      File "run.py", line 79, in <module>
        for j,(HR,LR) in enumerate(model(ref_im,**kwargs)):
      File "/home/-/-/project/eight/pulse/PULSE.py", line 110, in forward
        opt = SphericalOptimizer(opt_func, var_list, lr=learning_rate)
      File "/home/-/-/project/eight/pulse/SphericalOptimizer.py", line 17, in __init__
        self.radii = {param: (param.pow(2).sum(tuple(range(2,param.ndim)),keepdim=True)+1e-9).sqrt() for param in params}
      File "/home/-/-/project/eight/pulse/SphericalOptimizer.py", line 17, in <dictcomp>
        self.radii = {param: (param.pow(2).sum(tuple(range(2,param.ndim)),keepdim=True)+1e-9).sqrt() for param in params}
    AttributeError: 'Tensor' object has no attribute 'ndim'
    

    错误原因:pytorch版本不一致——使用的pytorch版本为1.10 ,而官方原本使用的版本为1.5
    解决方法: 更换正确的pytorch版本,可能需要更换服务器 或者 合适的配套 CUDA 版本;
    分析总结: 很多像这种类似的 AttributeError 通常大概率是因为框架版本不匹配的原因了。

  • 2 关键点在于:TypeError: forward() missing 1 required positional argument: 'ref_im’
  • Traceback (most recent call last):
      File "run.py", line 81, in <module>
        for j,(HR,LR) in enumerate(model(ref_im,**kwargs)):
      File "/home/dc1/.conda/envs/torch15/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
        result = self.forward(*input, **kwargs)
    TypeError: Caught TypeError in replica 1 on device 1.
    Original Traceback (most recent call last):
      File "/home/dc1/.conda/envs/torch15/lib/python3.8/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
        output = module(*input, **kwargs)
      File "/home/dc1/.conda/envs/torch15/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
        result = self.forward(*input, **kwargs)
    TypeError: forward() missing 1 required positional argument: 'ref_im'
    

    错误原因:这里运行属于模型测试,这个问题主要是因为我使用了多个显卡来运行代码,导致在运行阶段,模型和数据不在同一个卡。
    解决方法:双卡运行改为单卡,针对我的这个问题居然确实解决了。例如我的方式为:

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"
    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    

    文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

    原文链接:positive.blog.csdn.net/article/details/107807830