小编Iva*_*gov的帖子

火炬。pin_memory如何在Dataloader中工作?

我想了解pin_memory如何在Dataloader中工作。

根据文档。

pin_memory (bool, optional) – If True, the data loader will copy tensors into CUDA pinned memory before returning them.
Run Code Online (Sandbox Code Playgroud)

下面是自包含的代码示例。

import torchvision
import torch

print('torch.cuda.is_available()', torch.cuda.is_available())
train_dataset = torchvision.datasets.CIFAR10(root='cifar10_pytorch', download=True, transform=torchvision.transforms.ToTensor())
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=64, pin_memory=True)
x, y = next(iter(train_dataloader))
print('x.device', x.device)
print('y.device', y.device)
Run Code Online (Sandbox Code Playgroud)

我得到了输出。

torch.cuda.is_available() True
x.device cpu
y.device cpu
Run Code Online (Sandbox Code Playgroud)

但我期待这样的事情,因为我指定的标志pin_memory=TrueDataloader

torch.cuda.is_available() True
x.device cuda:0
y.device cuda:0
Run Code Online (Sandbox Code Playgroud)

我也运行一些基准测试:

import torchvision
import torch
import time
import numpy as np

pin_memory=True
train_dataset =torchvision.datasets.CIFAR10(root='cifar10_pytorch', download=True, transform=torchvision.transforms.ToTensor()) …
Run Code Online (Sandbox Code Playgroud)

deep-learning torch pytorch

5
推荐指数
1
解决办法
3035
查看次数

标签 统计

deep-learning ×1

pytorch ×1

torch ×1