如果您之前没有拆分数据,trainloader 将使用整个 train 文件夹。您可以通过拆分数据来指定训练量,请参阅:
from torchvision import datasets
# convert data to a normalized torch.FloatTensor
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
# choose the training and test datasets
train_data = datasets.CIFAR10('data', train=True,
download=True, transform=transform)
test_data = datasets.CIFAR10('data', train=False,
download=True, transform=transform)
valid_size = 0.2
# obtain training indices that will be used for validation
num_train = len(train_data)
indices = list(range(num_train))
np.random.shuffle(indices)
split = int(np.floor(valid_size * num_train))
train_idx, valid_idx = indices[split:], indices[:split]
# define samplers for obtaining training and validation batches
train_sampler = SubsetRandomSampler(train_idx)
valid_sampler = SubsetRandomSampler(valid_idx)
# prepare data loaders (combine dataset and sampler)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size,
sampler=train_sampler, num_workers=num_workers)
valid_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size,
sampler=valid_sampler, num_workers=num_workers)
test_loader = torch.utils.data.DataLoader(test_data, batch_size=batch_size,
num_workers=num_workers)```
批量大小是您通过迭代(时期)捕获的文件数。例如,如果您的 training_size 为 1000,并且您的 batch_size 为 10,那么每个 epoch 将包含 100 次迭代。
worker的数量用于对batch的数据进行预处理。更多的工人将消耗更多的内存使用,工人有助于加快输入和输出过程。
num_workers = 0 表示将在需要时进行数据加载,
num_workers > 0 表示您的数据将使用您定义的工人数量进行预处理。