一小时学会TensorFlow2之大幅提高模型准确率

 更新时间:2021年09月08日 14:47:22   作者:我是小白呀  
这篇文章主要介绍了TensorFlow2之大幅提高模型准确率,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

过拟合

当训练集的的准确率很高, 但是测试集的准确率很差的时候就, 我们就遇到了过拟合 (Overfitting) 的问题. 如图:

在这里插入图片描述

过拟合产生的一大原因是因为模型过于复杂. 下面我们将通过讲述 5 种不同的方法来解决过拟合的问题, 从而提高模型准确度.

Regulation

Regulation 可以帮助我们通过约束要优化的参数来防止过拟合.

在这里插入图片描述

公式

未加入 regulation 的损失:

在这里插入图片描述

加入 regulation 的损失:

在这里插入图片描述

λ 和 lr (learning rate) 类似. 如果 λ 的值越大, regularion 的力度也就越强, 权重的值也就越小.

例子

添加了 l2 regulation 的网络:

network = tf.keras.Sequential([
    tf.keras.layers.Dense(256, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(128, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(10)
])

动量

动量 (Momentum) 是指运动物体的租用效果. 在梯度下降的过程中, 通过在优化器中加入动量, 我们可以减少摆动从而达到更优的效果.

未添加动量:

在这里插入图片描述

添加动量:

在这里插入图片描述

公式

未加动量的权重更新:

在这里插入图片描述

  • w: 权重 (weight)
  • k: 迭代的次数
  • α: 学习率 (learning rate)
  • ∇f(): 微分

添加动量的权重更新:

在这里插入图片描述

  • β: 动量权重
  • z: 历史微分

例子

添加了动量的优化器:

optimizer = tf.keras.optimizers.SGD(learning_rate=0.02, momentum=0.9)
optimizer = tf.keras.optimizers.RMSprop(learning_rate=0.02, momentum=0.9)

注: Adam 优化器默认已经添加动量, 所以无需自行添加.

学习率递减

简单的来说, 如果学习率越大, 我们训练的速度就越大, 但找到最优解的概率也就越小. 反之, 学习率越小, 训练的速度就越慢, 但找到最优解的概率就越大.

在这里插入图片描述

过程

我们可以在训练初期把学习率调的稍大一些, 使得网络迅速收敛. 在训练后期学习率小一些, 使得我们能得到更好的收敛以获得最优解. 如图:

在这里插入图片描述

例子

learning_rate = 0.2  # 学习率
optimizer = tf.keras.optimizers.SGD(learning_rate=learning_rate, momentum=0.9)  # 优化器

# 迭代
for epoch in range(iteration_num):
    optimizer.learninig_rate = learning_rate * (100 - epoch) / 100  # 学习率递减

Early Stopping

之前我们提到过, 当训练集的准确率仍在提升, 但是测试集的准确率反而下降的时候, 我们就遇到了过拟合 (overfitting) 的问题.

Early Stopping 可以帮助我们在测试集的准确率下降的时候停止训练, 从而避免继续训练导致的过拟合问题.

在这里插入图片描述

Dropout

Learning less to learn better

Dropout 会在每个训练批次中忽略掉一部分的特征, 从而减少过拟合的现象.

在这里插入图片描述

dropout, 通过强迫神经元, 和随机跳出来的其他神经元共同工作, 达到好的效果. 消除减弱神经元节点间的联合适应性, 增强了泛化能力.

例子:

network = tf.keras.Sequential([
    tf.keras.layers.Dense(256, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(128, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(64, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(32, activation=tf.nn.relu),
    tf.keras.layers.Dense(10)
])

到此这篇关于一小时学会TensorFlow2之大幅提高模型准确率的文章就介绍到这了,更多相关TensorFlow2模型准确率内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对python中不同模块(函数、类、变量)的调用详解

    对python中不同模块(函数、类、变量)的调用详解

    今天小编就为大家分享一篇对python中不同模块(函数、类、变量)的调用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 一文详解Python定时任务触发

    一文详解Python定时任务触发

    这篇文章主要为大家详细介绍了Python定时任务触发的相关知识,文中的示例代码讲解详细,对我们学习Python有一定的帮助,需要的可以参考一下
    2023-04-04
  • 跟老齐学Python之折腾一下目录

    跟老齐学Python之折腾一下目录

    本讲只关注os.path,真所谓“弱水三千,只取一瓢”,为什么这么偏爱它呢?因为它和前面已经讲过的文件操作进行配合,就能够随心所欲操作各个地方的文件了
    2014-10-10
  • Python3访问MySQL数据库的实现步骤

    Python3访问MySQL数据库的实现步骤

    要实现一个简单的IM(即时通讯)系统,支持用户注册、登录和聊天记录存储,你可以使用Python和mysql数据库,以下是一个基本的实现步骤,并通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-11-11
  • Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例

    Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例

    这篇文章主要介绍了Python实现的插入排序,冒泡排序,快速排序,选择排序算法,结合实例形式总结分析了Python插入排序,冒泡排序,快速排序,选择排序等算法的实现与使用技巧,需要的朋友可以参考下
    2019-05-05
  • Python结合Sprak实现计算曲线与X轴上方的面积

    Python结合Sprak实现计算曲线与X轴上方的面积

    这篇文章主要介绍了Python结合Sprak实现计算曲线与X轴上方的面积,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • Python基于贪心算法解决背包问题示例

    Python基于贪心算法解决背包问题示例

    这篇文章主要介绍了Python基于贪心算法解决背包问题,简单描述了贪心算法的概念、原理并结合实例形式分析了Python使用贪心算法解决背包问题的具体操作技巧,需要的朋友可以参考下
    2017-11-11
  • python数据库编程 Mysql实现通讯录

    python数据库编程 Mysql实现通讯录

    这篇文章主要为大家详细介绍了python数据库编程,Mysql实现通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Pycharm关闭控制台多余窗口的解决办法

    Pycharm关闭控制台多余窗口的解决办法

    这篇文章主要介绍了Pycharm关闭控制台多余窗口的解决办法,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • Python实现将目录中TXT合并成一个大TXT文件的方法

    Python实现将目录中TXT合并成一个大TXT文件的方法

    这篇文章主要介绍了Python实现将目录中TXT合并成一个大TXT文件的方法,涉及Python针对目录下文本文件的遍历、读取及写入等技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论