理解python命令进行深入学习时的困惑
我最近开始用pytorch学习深度学习 我对这些代码行有问题 参数理解python命令进行深入学习时的困惑,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,我最近开始用pytorch学习深度学习 我对这些代码行有问题 参数train=True表示它将取出训练数据 但50%的培训需要多少数据? 我们如何指定用于培训的数据量。同样,无法理解批处理大小和num\u workers,这在加载数据时意味着什么?batch\u size参数是否与深度学习培训中使用的参数类似 download=True, transform=transform) trainloader = torc
train=True
表示它将取出训练数据
但50%的培训需要多少数据?
我们如何指定用于培训的数据量。同样,无法理解批处理大小
和num\u workers
,这在加载数据时意味着什么?batch\u size
参数是否与深度学习培训中使用的参数类似
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
shuffle=False, num_workers=2)
batch_size
是您想要的批次(您提供的数据集中的数据组)的大小,num_workers
是在批次上工作的工人数量,基本上是多处理工人
但50%的培训需要多少数据
DataLoader不提供任何方法来控制要提取的样本数量。您必须使用切片迭代器的典型方法
最简单的方法(没有任何库)是在达到所需的样本数后停止
nsamples = 10000
for i, image, label in enumerate(train_loader):
if i > nsamples:
break
# Your training code here.
或者,您可以使用itertools.islice获取前10k个样本。像这样
for image, label in itertools.islice(train_loader, stop=10000):
# your training code here.
您可以参考此如果之前未拆分数据,列车装载机将使用整个列车文件夹。您可以通过拆分数据来指定培训量,请参见:
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)```
批处理大小是通过迭代(历元)捕获的文件数。例如,如果训练大小为1000,批处理大小为10,则每个历元将包含100次迭代
工人数量用于对批次数据进行预处理。更多的工人将消耗更多的内存,工人有助于加快输入和输出过程。
num_workers=0表示将在需要时加载数据,
num_workers>0表示您的数据将按照您定义的worker数进行预处理。在上述代码中,它将数据拆分为60-20-20,用于培训、验证和测试?意味着批量大小,与我们通常用于深度学习的一样,不是吗?第二,我如何定义初始变量;如
列车数据
。。我使用的是上面的教程,我想把你的代码放在其中。对于你的第一个问题:算法将train\u数据
分为80%用于训练,20%用于验证(在训练过程中进行验证)。因此,我有我的测试数据
(我的神经网络以前从未见过的数据集),在我的神经网络训练后,她被用来测试她的准确性。是的,批量大小相同。关于第二个问题:train\u data
是您的数据加载器。在这段代码中,我使用的是已经由torchvision提供的CIFAR10数据集。我将编辑我的答案以包含这部分代码。结构是相同的,但是您必须指定数据集的路径、批大小、工作人员的数量,如果您想洗牌图像等等。