【深度学习 | Pytorch】从MNIST数据集看batch_size

一、MNIST数据集

MNIST是一个手写数字图像数据集,包含了 60,000 个训练样本和 10,000 个测试样本。这些图像都是黑白图像,大小为 28 × \times × 28 像素,每个像素点的值为 0 到 255 之间的灰度值,表示图像亮度的变化。

这个数据集主要被用于测试机器学习算法和模型的性能,尤其是在图像分类任务上。它通常被用作入门级别的图像分类问题的基准数据集,因为它相对简单并且容易使用。

MNIST数据集包含数字 0 到 9 的手写数字,每个数字有 6000 个样本,这些样本是从不同人的手写数字中随机采样而来的。由于数据集的小规模和相对简单的图像,MNIST已经成为了机器学习领域的经典数据集之一。

二、导入数据

在我们导入数据时,经常会这样操作:

train_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('./data/', train = True, download = True,
                               transform = torchvision.transforms.Compose([
                                   torchvision.transforms.ToTensor(),
                                   torchvision.transforms.Normalize(
                                       (0.1307, ), (0.3081, ))])), batch_size = batch_size_train, shuffle = True)
test_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('./data/', train = False, download = True,
                               transform = torchvision.transforms.Compose([
                                   torchvision.transforms.ToTensor(),
                                   torchvision.transforms.Normalize(
                                       (0.1307, ), (0.3081, ))])), batch_size = batch_size_test, shuffle = True)

这段代码是用来创建train_loader和test_loader的。

train_loader和test_loader是PyTorch中的DataLoader对象,用来将数据集按照batch_size分批加载,每个batch_size大小的数据被视为一个batch,用来进行模型训练和测试。

在这里,MNIST数据集被用来创建这两个DataLoader对象,train=True表示创建用于训练的数据集,train=False表示创建用于测试的数据集,batch_size_trainbatch_size_test分别表示训练集和测试集的batch size。transform参数是一个用来对数据进行预处理的PyTorch的Transform对象,这里使用了ToTensor()Normalize()两个变换,将图片转换成张量,并进行标准化。

三、batch_size的理解

3.1 定义和理解

batch_size是指一次迭代训练所使用的样本数,它是深度学习中非常重要的一个超参数。

在训练过程中,通常将所有训练数据分成若干个batch,每个batch包含若干个样本,模型会依次使用每个batch的样本进行参数更新。通过使用batch_size可以在训练时有效地降低模型训练所需要的内存,同时可以加速模型的训练过程。

通常情况下,batch_size的值越大,训练时使用的内存就越多,但是模型的收敛速度会加快,对于深度学习中较大的数据集,较大的batch_size可以提高训练速度,但可能会降低模型的准确率。

相反,batch_size的值越小,训练时使用的内存就越少,但是模型的收敛速度会变慢,同时可能会提高模型的准确率。因此,我们需要根据数据集的大小、模型的复杂度和计算资源的限制等因素综合考虑选择一个合适的batch_size。

扫描二维码关注公众号,回复: 14599492 查看本文章

3.2 对于MNIST数据集,batch_size_train一般选择多少?

对于MNIST数据集,batch_size_train可以设置为32、64、128等。具体选择哪一个需要根据模型的复杂度和显存大小等因素来考虑。如果模型较简单,显存较小,可以选择较小的batch size;如果模型较复杂,显存较大,可以适当增大batch size以提高训练效率。通常来说,较大的batch size可以带来更稳定的梯度估计,有助于加速训练。

3.3 对于MNIST数据集,batch_size_test一般选择多少?

在MNIST数据集中,测试集的图像数量为10000张,为了保证测试的准确性,一般建议将 batch_size_test 设为1000,这样测试集中的图像可以被分成10个批次来进行测试,以避免由于内存不足而无法完成测试的问题。

猜你喜欢

转载自blog.csdn.net/wzk4869/article/details/129981484