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
 - 工具:
- conda-pack: https://conda.github.io/conda-pack/
 
 - 用法(以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 
                    
                
                
            
        
浙公网安备 33010602011771号