Dropout 与过拟合抑制 | 学习笔记

简介: 快速学习 Dropout 与过拟合抑制

开发者学堂课程【Tensorflow 2.0入门与实战Dropout与过拟合抑制】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/664/detail/11111


Dropout 与过拟合抑制


内容介绍:

一、 Dropout 如何抑制过拟合

二、 减小网络容量抑制过拟合


一、Dropout 如何抑制过拟合

如何在网络中添加 Dropout 层,使用已经建立好的 model

model = tf. keras.Sequential()

model.add(tf.keras.layers.Flatten(input_shape=(28,28)))# 28*28

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers. Dense(10,activation='softmax'))

在其中插入 Dropout 层:

model = tf. keras.Sequential()

model.add(tf.keras.layers.Flatten(input_shape=(28,28)))# 28*28

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers.Dropout(0.5))

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers.Dropout(0.5))

model.add(tf.keras.layers.Dense(128,activation='relu'))

model.add(tf.keras.layers.Dropout(0.5))

model.add(tf.keras.layers. Dense(10,activation='softmax'))

Dropout 中的参数 rate 是0-1之间的一个值,代表抛弃或丢弃掉多大部分的单元数,比如0.5,每次只激活50%,随机的丢弃掉50%,添加多个 Dropout 层效果会更好。

添加 Dropout 层之后,重新训练一下,

image.png

从正确率的变化中可以看出,因为 val_acc 的值高于 acc 的值,说明它没有过拟合。

image.png

loss 的变化情况所以添加 Dropout 层可以起到一定的抑制过拟合的效果。


二、减小网络容量抑制过拟合

添加 Dropout 层可以起到一定的抑制过拟合的效果,但是抑制过拟合的最好的方法是增加训练数据,第二个比较好的办法是减小网络的容量。

减小网络的容量,使用小型网络会迫使网络学习最关键的数据,从而起到一定的抑制过拟合的效果。

model =tf.keras. Sequential()

model.add(tf.keras.layers.Flatten(input_shape=(28,28)))# 28*28

model.add(tf.keras.layers. Dense(32,activation='relu'))

model.add(tf.keras.layers. Dense(10,activation='softmax'))

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),

loss=' categorical_crossentropy',

metrics=['acc']

history = model.fit(train_image,train_label_onehot,

epochs=10,

validation_data=(test_image,test_label_onehot))

看一下结果情况,这就是一个小型网络,从层数来讲,减了一层;从隐藏单元数来讲,只有32个隐藏单元数。

将其训练的过程可视化

plt.plot(history.epoch,history.history.get('acc'),label='acc')

plt.plot(history.epoch,history.history.get('val_acc'),label='val_acc')

plt.legend()

image.png

这个小型网络在正确率上呈上升的趋势,说明这个模型训练10个 epoch 是不够的,再多训练几个,可能会达到比较好的结果。

所以减小网络规模,也是抑制过拟合的一种非常好的方法。

抑制过拟合的另一种方法是正则化,原理就是控制网络规模,控制参数的规模。

正则化在实际中应用不多。

相关文章
|
消息中间件 网络协议 前端开发
laravel实现利用RabbitMQ实现MQTT即时通讯
laravel实现利用RabbitMQ实现MQTT即时通讯
1171 0
|
7月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
6939 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
10月前
|
关系型数据库 决策智能
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
467 3
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
|
机器学习/深度学习 编解码 PyTorch
CVPR 2023 | 主干网络FasterNet 核心解读 代码分析
本文分享来自CVPR 2023的论文,提出了一种快速的主干网络,名为FasterNet。核心算子是PConv,partial convolution,部分卷积,通过减少冗余计算和内存访问来更有效地提取空间特征。
10355 58
|
机器学习/深度学习 传感器 编解码
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
以视觉为中心的俯视图(BEV)感知最近受到了广泛的关注,因其可以自然地呈现自然场景且对融合更友好。随着深度学习的快速发展,许多新颖的方法尝试解决以视觉为中心的BEV感知,但是目前还缺乏对该领域的综述类文章。本文对以视觉为中心的BEV感知及其扩展的方法进行了全面的综述调研,并提供了深入的分析和结果比较,进一步思考未来可能的研究方向。如下图所示,目前的工作可以根据视角变换分为两大类,即基于几何变换和基于网络变换。前者利用相机的物理原理,以可解释性的方式转换视图。后者则使用神经网络将透视图(PV)投影到BEV上。
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
|
XML 机器学习/深度学习 算法
haarcascade_frontalface_alt
【6月更文挑战第18天】
673 4
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
2391 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
|
存储 人工智能 机器人
生成式 AI 与 LangCHain(一)(4)
生成式 AI 与 LangCHain(一)
769 1
什么是绝对路径,什么是相对路径,绝对路径和相对路径的区别?
什么是绝对路径,什么是相对路径,绝对路径和相对路径的区别?
6969 0