Pytorch 超参数调整技术17 Mar 2025 | 4 分钟阅读 在上一节中,我们训练了 Lenet 模型和 CIFAR 数据集。 我们发现我们的 LeNet 模型可以正确预测大多数图像,并且我们还发现了准确性方面的过拟合。 虽然我们的模型没有经过很好的训练,但它仍然能够预测大多数验证图像。 由于增加了深度多样性和训练图像的固有复杂性,CIFAR 数据集将更难分类。 我们与 MNIST 数据集配合得很好的同一个 LeNet 模型现在在准确地对 CIFAR 数据集进行分类时遇到了问题。 我们目前面临两个主要问题。 准确度不够高,并且网络似乎对我们的训练数据过拟合。 第一个问题可以使用对我们的 LeNet 模型代码的各种修改来解决。 我们将应用的修改非常依赖于案例,并需要对我们的模型容量进行微调。 它通常是一个针对每个特定深度学习任务的非常具体的过程。 然而,对我们的模型进行微调很重要,并且可以显着提高我们的模型性能。 我们必须始终尝试修改我们的模型,看看这些修改如何提高我们模型的有效性。 我们将应用以下修改 1) 第一个修改将侧重于学习率。 Adam 优化器计算单独的自适应学习率。 为获得最佳性能,指定合适的学习率仍然很重要。 学习率过高通常会导致准确性降低。 较低的学习率可以帮助神经网络在涉及更复杂的数据集时更有效地学习。 注意:学习率过小会显着降低我们的训练性能。借助分析和经验,我们得出结论,训练过程非常缓慢,并且训练和验证的准确性从一个 epoch 到下一个 epoch 并没有显着提高。 我们将学习率设置为 0.001 而不是 0.0001。 ![]() ![]() 2) 第二个修改非常有效。 我们将简单地添加更多卷积层。 通过添加更多卷积,我们的网络可以更有效地提取特征,并且还可以提高准确性。 注意:定义卷积层的常见架构是每一层都将前一层的输出深度加倍。在我们的第一个卷积层中,将有 3 个输入通道,并且 conv1 的深度对应于 16 个输出通道。 然后将其加倍到 32,然后加倍到 64 当我们从一个卷积层到下一个卷积层进行操作时,卷积层输出的深度持续增加。 通过这样做,我们在内部增加了提取与正向输入相关的高度复杂信息的过滤器数量。 卷积层用于使网络更深,以提取越来越复杂的特征。 因此,我们将创建另一个卷积层 conv3 作为 将要输入到我们的完全连接层的适当向量将是五乘五,这与之前相同,但输出通道的数量将为 64。 为了确保一致性,我们还将更改 forward 的 view 方法中的输出通道数 初始化第三个卷积层后,我们将对其应用 relu 函数 更大的内核意味着更多的参数。 我们将使用更小的内核大小来消除过拟合。 我们将使用内核大小为 3,这将适合我们的代码。 以前在 MNIST 数据集中,我们在卷积层中没有使用任何填充,但现在我们正在处理更复杂的数据集。 通过包含填充来保留图像的边缘像素以确保最大的特征提取是有道理的。 我们将所有卷积层的所有填充设置为 1 馈送到完全连接层的最终向量由图像大小决定,该图像大小将在每个最大池化层减半。 图像大小将减小为 ![]() 因此,我们将更改我们的 nn.Linear 初始化方法 同样,我们将更改 forward 的 view 方法 现在,我们将对其进行训练,它将为我们提供以下预期输出 ![]() ![]() 下一主题Pytorch 数据增强过程 |
我们请求您订阅我们的新闻通讯以获取最新更新。