正如问题的标题清楚地描述的那样,即使torch.cuda.is_available()
返回True
,张量也使用CPU
而不是GPU
。我已经将张量的device
设置为在定义device
后通过images.to(device)
函数调用GPU
。当我调试代码时,我能够看到device
设置为cuda:0
;但是张量的device
仍然设置为cpu
。
定义设备:
use_cuda = torch.cuda.is_available() # returns True
device = torch.device('cuda:0' if use_cuda else 'cpu')
确定张量的装置:
for epoch in range(num_epochs):
for i, (images, labels) in enumerate(train_loader):
images.to(device)
labels.to(device)
# both of images and labels' devices are set to cpu
软件堆栈:
Python 3.7.1
torch 1.0.1
Windows 10 64-bit
附言PyTorch
安装时带有Cuda 9.0 支持选项。
tensor.to()
不会就地修改张量。它返回存储的新张量 在指定的设备中。
请改用以下内容。
images = images.to(device)
labels = labels.to(device)