深度学习的学习率调节实践

本文探讨了在深度学习中如何通过指数增长学习率寻找最佳学习率,以在MNIST数据集上训练多层感知器。利用Keras模型,结合回调和TensorBoard进行可视化,展示了损失曲线,解释了学习率对模型性能的影响。最终,通过实践达到了88%的准确率,并介绍了深度学习模型的最佳实践策略。
摘要由CSDN通过智能技术生成

多层感知器

多层感知器(MLP)是由一个输入层、一个或多个隐藏层和一个称为输出层的最终层组成的人工神经网络(ANN)。通常,靠近输入层的层称为较低层,靠近输出层的层称为外层,除输出层外的每一层都包含一个偏置神经元,并与下一层完全相连。

当一个ANN包含一个很深的隐藏层时,它被称为深度神经网络(DNN)。

在本文中,我们将在MNIST数据集上训练一个深度MLP,并通过指数增长来寻找最佳学习率,绘制损失图,并找到损失增长的点,以达到85%以上的准确率。对于最佳的实践过程,我们将实现早期停止,保存检查点,并使用TensorBoard绘制学习曲线。

你可以在这里查看jupyter Notebook:https://github.com/lukenew2/learning_rates_and_best_practices/blob/master/optimal_learning_rates_with_keras_api.ipynb

指数学习率

学习率可以说是最重要的超参数。一般情况下,最佳学习速率约为最大学习速率(即训练算法偏离的学习速率)的一半。找到一个好的学习率的一个方法是训练模型进行几百次迭代,从非常低的学习率(例如,1e-5)开始,逐渐增加到非常大的值(例如,10)。

这是通过在每次迭代时将学习速率乘以一个常数因子来实现的。如果你将损失描绘为学习率的函数,你应该首先看到它在下降,但过一段时间后,学习率会变得很高,这时损失会迅速回升:最佳学习率将略低于转折点,然后你可以重新初始化你的模型,并使用此良好的学习率对其进行正常训练。

Keras模型

我们先导入相关库

import osimport matplotlib.pyplot as pltimport numpy as npimport pandas as pd
PROJECT_ROOT_DIR = "."IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images")os.makedirs(IMAGES_PATH, exist_ok=True)
def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300):    path = os.path.join(IMAGES_PATH, fig_id + "." + fig_extension)    print("Saving figure", fig_id)    if tight_layout:        plt.tight_layout()    plt.savefig(path, format=fig_extension, dpi=resolution)
import tensorflow as tffrom tensorflow import keras

接下来加载数据集

(X_train, y_train), (X_test, y_test) = keras.datasets.fashion_mnist.load_data()
X_train.shape
X_train.dtype

标准化像素

X_valid, X_train = X_train[:5
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值