至少在我看来,这个问题介于 Stackoverflow 和 Superuser 之间,所以如果这是错误的地方(在您看来;)),请随时指出我。
问题:
如果我在 Python 代码中放置断点,调试器就会停止。如果我想进入下一行,它就会这样做。 除非它发生在枚举(数据加载器)之后。我可以在枚举(数据加载器)之后放置一个断点,调试器也会停止。但是我无法单步执行。如果我在枚举(数据加载器)之前放置断点并跨过枚举行,也会发生同样的情况。它不适用于枚举(..)之后的行。
有趣的是,它直到最近才开始发挥作用——大约一周前
# Breakpoints work, stepping over works
...
for epoch in range(num_epochs):
for i, data in enumerate(dataloader, 0):
# If I break before this line and I step until the next, I can not step afterwards
netD.zero_grad()
# Breakpoints work, stepping does not
我尝试了什么来解决这个问题:
- 我卸载了 PyCharm 并重新安装了它。
- 我尝试使用社区版。
- 我尝试运行带有和不带有 cython 调试器扩展的两个版本。
- 我检查了它停止工作后安装了哪些东西并将其删除。
- 我查看了 Jetbrains、SO 和 Pytorch 论坛上的大量帖子。我发现有些帖子看起来很有意思,但实际上并不适合我的问题。
- 我尝试使用不同的 CUDA 版本和 cudnn 版本。
到目前为止什么都没起作用……我真的不想重新安装我的操作系统,这很可能会有所帮助,但是,出于显而易见的原因,这不是我想要的。有没有人遇到过这种情况并能帮助我?提前谢谢。请随时询问更多详细信息。我会尽量提供尽可能多的详细信息
我将列出我的设置的一些细节:
操作系统:
- 英特尔® 酷睿™ i7-7700K CPU @ 4.20GHz × 8
- Nvidia RTX 2080 TI
- NVIDIA-SMI 430.26 驱动程序版本:430.26 CUDA 版本:10.2
- Ubuntu 18.04
软件:
- PyCharm 社区和 EDU 2019.2
- (Ana)conda(水蟒)
- cudnn 也安装了
- 两个用于 python 3.6 和 python 3.7 的 conda 环境,带有 pytorch 及其所需的一切(numpy、scipy、matplotlib 等)
NVCC:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168
答案1
几个星期以来,我都遇到同样的问题,终于解决了!解决方案是在创建对象时设置num_workers
为。0
DataLoader