深度学习踩坑记录

深度学习踩坑记录(缓更)

1. caffe2线程泄露

问题描述:在使用pytorch1.9的dataloader时,如果设置num_workers>0或者pin_memory=True时,出现caffe2线程泄露的warning,数量等于num_workers的数量。

[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)

问题分析:不影响正常使用,如果设置num_workers数目为0和pin_memory=False会影响训练速度,不推荐更改。

官方说在pytorch1.10会修改这个warning,之后就不会有这个问题了,如果不想看它一直输出可以使用下面的解决方法。

解决方法:pytorchGitHub项目问题讨论

使用GitHub源文件安装的方式安装pytorch,并在安装前删除caffe2/utils/threadpool/pthreadpool-cpp.cc 文件中的警告程序删除,即下方代码块的第四行。

auto num_threads = leaked->get_thread_count();
      // NOLINTNEXTLINE(modernize-make-unique)
      threadpool.reset(new PThreadPool(num_threads));
      TORCH_WARN("Leaking Caffe2 thread-pool after fork.");

总结:处理起来比较麻烦,还是等pytorch1.10发布吧,这个警告也不会影响程序运行。

2.pandas包没有’read_csv’或者‘read_excel’

问题描述:在使用pandas读取csv文件和Excel文件时,出现没有函数的错误

partially initialized module ‘pandas’ has no attribute ‘read_csv’ (most likely due to a circular import)

问题分析:pandas包是安装过的,根据报错显示,可能是因为命名冲突。

问题解决:我的文件名是copy.py,改成其它的文件名就解决了问题。

3.RuntimeError: CUDA error: device-side assert triggered

问题描述:pytorch的BCELoss()函数计算损失函数时报错

RuntimeError: CUDA error: device-side assert triggered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

解决方法:只看cuda的报错很难定位问题,可以把程序用cpu跑一下,可以使很多报错变得很友好,用cpu跑之后,报错变成

RuntimeError: all elements of input should be between 0 and 1

现在问题就很明确了,BCEloss的输入必须是0-1,因为之前忘记做sigmoid了,加上之后问题解决。

4. opencv-python cv2.imshow()等函数调用报错

问题描述:装了pyqt之后cv2的函数一直报错

error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvShowImage’

解决方法:查了一些博客,发现都是重装opencv,但是没有解决我的问题,后来查到,

卸载+安装不会“重建库”。它重新安装软件包。真正的问题是opencv的多个包之间的冲突,其中一个可能是无头包。 所以解决方法如下

pip uninstall opencv-python-headless -y 
pip install opencv-python --upgrade

5.dicom2nifti.exceptions.ConversionValidationError: SLICE_INCREMENT_INCONSISTENT

问题描述:使用dicom2nifti把dicom文件转为nii文件时,出现切片不连续的错误

dicom2nifti.exceptions.ConversionValidationError: SLICE_INCREMENT_INCONSISTENT

解决方法:在setting中将切片连续检查关闭

    import dicom2nifti.settings as settings
    settings.disable_validate_slice_increment()
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值