gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章一小时学会TensorFlow2之大幅提高模型准确率由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

过拟合

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

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

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

  。

Regulation

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

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

公式

未加入 regulation 的损失

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

加入 regulation 的损失

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

λ 和 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) 是指运动物体的租用效果. 在梯度下降的过程中, 通过在优化器中加入动量, 我们可以减少摆动从而达到更优的效果. 。

未添加动量

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

添加动量

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

公式

未加动量的权重更新

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

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

添加动量的权重更新

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

  • β: 动量权重
  • 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 优化器默认已经添加动量, 所以无需自行添加. 。

  。

学习率递减

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

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

过程

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

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

例子

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 可以帮助我们在测试集的准确率下降的时候停止训练, 从而避免继续训练导致的过拟合问题. 。

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

  。

Dropout

Learning less to learn better 。

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

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

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模型准确率内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/weixin_46274168/article/details/117986352 。

最后此篇关于一小时学会TensorFlow2之大幅提高模型准确率的文章就讲到这里了,如果你想了解更多关于一小时学会TensorFlow2之大幅提高模型准确率的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com