深度学习踩坑记录

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

文章目录

  • 深度学习踩坑记录(缓更)
    • 1. caffe2线程泄露
    • 2.pandas包没有'read_csv'或者‘read_excel’
    • 3.RuntimeError: CUDA error: device-side assert triggered
    • 4. opencv-python cv2.imshow()等函数调用报错
    • 5.dicom2nifti.exceptions.ConversionValidationError: SLICE_INCREMENT_INCONSISTENT

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()

你可能感兴趣的:(python,深度学习,opencv,pytorch)