详解Keras3.0 Layer API: Dropout layer

Dropout layer

图1 标准的神经网络

图2 加了Dropout临时删除部分神经元

Dropout层的作用是在神经网络中引入正则化,以防止过拟合。它通过随机丢弃一部分神经元(如图2)的输出来减少模型对训练数据的依赖性。这样可以提高模型的泛化能力,使其在测试数据上表现更好。

Dropout层的核心思想是减小神经网络中权重共享的情况,让不同的神经元可以承担不同的特征提取任务。由于每个神经元被丢弃的概率相同,因此每一轮训练都可能得到不同的网络结构,这有助于提高模型的泛化能力。同时,Dropout也有助于减少神经元之间的依赖性,增强模型的鲁棒性。

工作原理
  • 在训练阶段,对于每一层神经元,以一定的概率p随机选择一部分神经元,将它们的输出置为0。这样,每一层的神经元有p的概率被保留,也有p的概率被丢弃。
  • 在前向传播过程中,每一层神经元的输入会经过Dropout处理,保留概率p的神经元进行计算。
  • 在反向传播过程中,梯度会根据未被丢弃的神经元的权重进行传播。这意味着在更新权重时,被丢弃的神经元的权重不会被更新。
  • 在测试阶段,为了使用训练阶段得到的网络集合,每个神经元的输出需要乘以概率p。这样做的目的是为了在测试时模拟出与训练阶段相同的网络结构。
python 复制代码
keras.layers.Dropout(rate, noise_shape=None, seed=None, **kwargs)
参数说明
  • **rate:**在0和1之间浮动。要丢弃的输入单位的分数。
  • **noise_shape:**表示将与输入相乘的二进制丢弃掩码的形状的1D整数张量。例如,如果输入具有形状(batch_size,时间步长,features),并且希望所有时间步长的丢弃掩码相同,则可以使用noise_shape=(batch_size,1,features.)。
  • **seed:**用作随机种子的Python整数。
示例
python 复制代码
# 导入所需的库
from keras.models import Sequential
from keras.layers import Dense, Dropout

# 创建一个Sequential模型
model = Sequential()

#添加全连接层(Dense)
model.add(Dense(units=64, activation='relu', input_dim=100))

#在全连接层之后添加一个Dropout层,丢弃率为0.5
model.add(Dropout(rate=0.5))

#添加全连接层
model.add(Dense(units=10, activation='softmax'))

#编译模型,设置损失函数、优化器和评估指标
model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
相关推荐
还有你Y1 分钟前
Orca 如何用 ADE + 多 Agent 编排重写 AI 编程工作流
人工智能·agent
Htr_8 分钟前
Cortex 使用指南:开源 API 知识层
前端·数据库·人工智能·重构·计算机外设
tiger86514 分钟前
深入理解状态空间模型 (SSM):RNN 与 Transformer 的优雅融合
人工智能·gpt·rnn·神经网络·自然语言处理·transformer·语音识别
hfywmsj18 分钟前
广州餐饮铺位招租画像分析:从流量数据到选址落地
人工智能·广州餐饮铺位招租
麻瓜code19 分钟前
[Agent]Spring AI 工具调用实战:让大模型真正“干活“(@Tool 六大工具 + 统一注册)
java·人工智能·spring
IT·陈寒20 分钟前
React状态更新为啥有时吞了我的变更?
人工智能·大模型·api·创业·变现·简历优化
pen-ai22 分钟前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习
宸津-代码粉碎机29 分钟前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
不要生病了37 分钟前
MinD-Vis:用稀疏掩码预训练和双条件扩散从 fMRI 重建视觉图像
人工智能·计算机视觉·脑机接口
天远API39 分钟前
零信任架构实战:基于天远全能消金报告构建自动化消费分期网关
运维·人工智能·架构·自动化