pytorch - 不使用多处理但在使用 PyTorch DataLoader 时在 google colab 上出现 CUDA 错误
问题描述
我已将我的 GitHub 存储库克隆到 google colab 并尝试使用 PyTorch 的 DataLoader 加载数据。
global gpu, device
if torch.cuda.is_available():
gpu = True
device = 'cuda:0'
torch.set_default_tensor_type('torch.cuda.FloatTensor')
print("Using GPU")
else:
gpu = False
device = 'cpu'
print("Using CPU")
data_transforms = transforms.Compose([
#transforms.Resize(224),
transforms.ToTensor(),
transforms.Normalize([0.3112, 0.2636, 0.2047], [0.2419, 0.1972, 0.1554])
])
train_path = '/content/convLSTM/code/data/train/'
val_path = '/content/convLSTM/code/data/val/'
test_path = '/content/convLSTM/code/data/test/'
train_data = datasets.ImageFolder(root=train_path, transform=data_transforms)
val_data = datasets.ImageFolder(root=val_path, transform=data_transforms)
test_data = datasets.ImageFolder(root=test_path, transform=data_transforms)
train_loader = torch.utils.data.DataLoader(
train_data,
batch_size=18,
num_workers=4,
shuffle=False,
pin_memory=True
)
val_loader = torch.utils.data.DataLoader(
val_data,
batch_size=18,
shuffle=False,
num_workers=4,
pin_memory=True
)
test_loader = torch.utils.data.DataLoader(
test_data,
batch_size=18,
shuffle=False,
num_workers=4,
pin_memory=True
)
for batch_idx, (data, target) in enumerate(train_loader):
print(batch_idx)
if batch_idx==3:
break
运行最后一个 for 循环时出现以下错误:
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method
我尝试num_workers = 1
了,4
但错误仍然存在。我没有使用任何多处理。
我也试过不设置torch.set_default_tensor_type('torch.cuda.FloatTensor')
,但错误仍然存在。
蟒蛇:3.6.8 | 火炬:1.3.1
似乎是什么问题?
解决方案
不确定您是否已经修复它,但以防万一其他人阅读此内容,使用 n 件作品激活 pytorch 多处理。要禁用它,您需要拥有默认的工作人员数量,即 0,而不是 1。
尝试将 num_workers 设置为 0 或使用Torch Multiprocessing 子模块。
推荐阅读
- python - 词汇表中的单词数 gensim word2vec
- c# - 我想做一个简单的纸牌游戏,但有什么问题?
- java - 即使正确加载,似乎也无法访问我的 PlayerClass 中的图像文件
- python - 烧瓶名称错误:而 flask_wtf 和 FlaskForm
- javascript - 倒计时结束后,javascript和HTML中的倒计时页面不会重定向到另一个页面
- javascript - 具有自己的事件侦听器的动态查询选择器
- mysql - 删除 MySQL 表中的相同条目
- java - 如何修复代码中已添加的片段?
- reactjs - React 应用程序部署到 IIS StaticFile 处理程序问题
- python - 如何让 python 应用程序在主机上 24/7 全天候运行?