dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用。
基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实的,当然也可能是假的。
大致步骤
1. 在神经元 H1 被激活后,随机生成一组数据 U1 和一个0-1的随机数 p
H1 = np.maximum(0, np.dot(W1, X) + b1)
U1 = np.random.rand(*H1.shape) < p
2. U1中小于p的被置1,大于p的被置0
H1 *= U1
p 越大,被置1的越多,被保留的神经元越多
使用方法
1. 只用在训练过程,测试过程不要使用 【你非要使用,也可以,代码是可以跑的】
// 因为训练是为了得到一个稳定的模型,但是测试时是实实在在的个体,是什么,理论上预测就是什么,如果你丢掉部分特征,那就是其他个体了,或者一会是A,一会是B,导致输出不稳定
// tf 会自动处理 dropout 的使用场景,即 tf 已经设定在训练时使用 dropout,测试时不使用
2. dropout 一般用在 pooling 之后
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人