【发布时间】:2019-05-11 23:43:31
【问题描述】:
pytorch 的 cifar 10 教程可以在这里找到: https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py
本教程介绍了如何使用 pytorch 为 CIFAR 10 数据集制作简单的卷积神经网络。接近尾声,稍微介绍了如何在 GPU 上实现上述代码。
本质上的区别在于我们创建设备 =torch.device('gpu') 并在计算之前将所有张量发送到 gpu 设备。所以本质上,我们希望在每次进行计算之前将网络对象、输入和标签张量发送到 gpu 设备。
于是我又回过头补充说:
net.to(device)
在计算循环中:
with torch.no_grad():
for data in testloader:
images, labels = data
#I added this line of change:
inputs, labels = inputs.to(device), labels.to(device)
outputs = net(images)
_, predicted = torch.max(outputs, 1)
c = (predicted == labels).squeeze()
for i in range(4):
label = labels[i]
class_correct[label] += c[i].item()
class_total[label] += 1
但是,这导致了一个错误:OSError: [Errno 12] Cannot allocate memory
我误会了什么?我是否需要进行任何其他更改才能使整个教程适用于 GPU?
【问题讨论】:
-
你的gpu有足够的内存吗?
-
哦,是这个问题吗?将张量发送到 GPU 后是否需要移除张量以节省空间?我该怎么做?
-
我不认为是 GPU 内存导致了这里的问题,python 进程无法分配 RAM 内存。如果他的 GPU 内存用完了,那将是一个 RuntimeError。
-
@wawawewa 您可以使用
htop程序检查 RAM 的数量是如何变化的吗?您还可以添加多少 RAM 吗?我在 8 GB 的机器上运行了本教程,没有任何问题。 -
在运行脚本之前运行 Htop,左上角显示 4.20/7.01 GB 内存。但是GPU上不应该有单独的几GB RAM吗?顺便说一句,我的 GPU 是带有 CUDA 10 工具包的 Nvidia GP107 [GeForce GTX 1050 Ti]
标签: python-3.x machine-learning computer-vision gpu pytorch