pytorch 踩坑记录及小技巧


arr = arr.astype(numpy.int16)
tensor = torch.from_numpy(arr)

问题1

  • TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.
  • 解决方法:加个arr = arr/1.0
arr = arr.astype(numpy.int16)
arr = arr/1.0
tensor = torch.from_numpy(arr)


问题2

  • 离线打包、拷贝conda 环境:
  • 参考 https://zhuanlan.zhihu.com/p/540615230
  • 工具:
  • 用法(以linux为例):
    • 在源电脑上:
      # 把虚拟环境 my_env 打包为 my_env.tar.gz
      conda pack -n my_env
      
      # -o 参数指定打包路径和名称,把虚拟环境 my_env 打包为 out_name.tar.gz
      conda pack -n my_env -o out_name.tar.gz
      
      # 把某个特定路径的虚拟环境打包为 my_env.tar.gz
      conda pack -p /explicit/path/to/my_env
      
    • 在目标电脑上:
      # 创建目录 `my_env`,并将环境解压至该目录
      mkdir -p my_env
      tar -xzf my_env.tar.gz -C my_env
      
      # 使用python而不激活或修复前缀。
      # 大多数 python 库可以正常工作,但需要处理前缀的部分将失败。
      ./my_env/bin/python
      
      # 激活环境,同时这步操作会将路径 `my_env/bin` 添加到环境变量 path
      source my_env/bin/activate
      
      # 在环境中运行python
      (my_env) $ python
      
      # 从激活环境中清除前缀。
      # 请注意,也可以在不激活环境的情况下运行此命令
      # 只要机器上已经安装了某个版本的python。
      (my_env) $ conda-unpack
      
      # 此时,环境与您在此路径直接使用 conda 安装的环境完全相同。
      # 所有脚本都应该工作正常。
      (my_env) $ ipython --version
      
      # 停用环境以将其从环境变量 path 中删除
      (my_env) $ source my_env/bin/deactivate
      

问题3: nnUnet相关

  • 当我同时使用nnUnetv1 和 nnunetv2,时。但是他们之间使用的 batchgenerators版本不一样,会造成一些模块的缺失并报错。

  • nnUnetv1使用:0.20.1或0.21版本; 而nnUnetv2使用:0.25版本

  • 当使用 nnUnetv2 + batchgenerators v0.25的时候报错:ModuleNotFoundError: No module named 'batchgenerators.dataloading.nondet_multi_threaded_augmenter'

  • 解决方案: 卸载原始的0.20版本的batchgenerators,重新用pip安装:pip3 install batchgenerators

posted @ 2023-12-18 11:48  PengPanda  阅读(608)  评论(0)    收藏  举报