为什么火炬使用小批量进行训练?
Why torch does train using mini-batches?
我目前正在尝试了解如何通过 pytorch
训练模型。与此同时,我看到了一个非常有趣的特性:传递给训练数据 --- 是一个小批量。例如
有官方pytorch的代码片段web-site
...
data_dir = 'data/hymenoptera_data'
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
data_transforms[x])
for x in ['train', 'val']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
shuffle=True, num_workers=4)
for x in ['train', 'val']}
...
...
for inputs, labels in dataloaders[phase]:
inputs = inputs.to(device)
labels = labels.to(device)
optimizer.zero_grad()
with torch.set_grad_enabled(phase == 'train'):
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
loss = criterion(outputs, labels)
...
根据此代码,传递给模型的输入是一个小批量。
我已经绑定了一些关于这个的信息,但是没有成功。
但我真的很好奇,它是某种提升(并行 运行 等)还是必需的东西。所以,你介意帮我弄清楚并告诉我,为什么有一个小批量传递给训练函数?
N.B。不会拒绝link给论文[笑脸:)].
这样想象;假设您想了解狗和猫之间的区别,而您以前从未见过它们。
批次是我们一次向您展示 10 张狗和猫的图像。你可以相当快地在说 4x10 图像(4 批次)后了解猫和狗的一些差异,但是如果到目前为止你看到的所有狗都是大狗,你当然会有偏见,因此你可能会将所有小型犬归类为猫。在足够多的批次之后,您将学习并忘却不同的功能,因为您不会一次看到所有这些功能,但重要的是,您开始快速学习一些东西。
另一方面,假设我们向您展示了 100 张图像而不是 10 张。您将需要更长的时间来查看所有图像并将它们相互比较,但您会了解“一个”中的差异可以这么说。
无论哪种方式;当你处理完这些图像(作为批次或整个数据集)后,我可以给你看一张图像,你可以告诉我它是狗还是猫,即使你已经从多张图像中学习了。
我目前正在尝试了解如何通过 pytorch
训练模型。与此同时,我看到了一个非常有趣的特性:传递给训练数据 --- 是一个小批量。例如
有官方pytorch的代码片段web-site
...
data_dir = 'data/hymenoptera_data'
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
data_transforms[x])
for x in ['train', 'val']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
shuffle=True, num_workers=4)
for x in ['train', 'val']}
...
...
for inputs, labels in dataloaders[phase]:
inputs = inputs.to(device)
labels = labels.to(device)
optimizer.zero_grad()
with torch.set_grad_enabled(phase == 'train'):
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
loss = criterion(outputs, labels)
...
根据此代码,传递给模型的输入是一个小批量。
我已经绑定了一些关于这个的信息,但是没有成功。
但我真的很好奇,它是某种提升(并行 运行 等)还是必需的东西。所以,你介意帮我弄清楚并告诉我,为什么有一个小批量传递给训练函数?
N.B。不会拒绝link给论文[笑脸:)].
这样想象;假设您想了解狗和猫之间的区别,而您以前从未见过它们。 批次是我们一次向您展示 10 张狗和猫的图像。你可以相当快地在说 4x10 图像(4 批次)后了解猫和狗的一些差异,但是如果到目前为止你看到的所有狗都是大狗,你当然会有偏见,因此你可能会将所有小型犬归类为猫。在足够多的批次之后,您将学习并忘却不同的功能,因为您不会一次看到所有这些功能,但重要的是,您开始快速学习一些东西。
另一方面,假设我们向您展示了 100 张图像而不是 10 张。您将需要更长的时间来查看所有图像并将它们相互比较,但您会了解“一个”中的差异可以这么说。
无论哪种方式;当你处理完这些图像(作为批次或整个数据集)后,我可以给你看一张图像,你可以告诉我它是狗还是猫,即使你已经从多张图像中学习了。