新闻详情

新闻详情

首页 / 资讯中心 / 详情

随机失活(dropout),批量归一化处理图像(bn1,bn2)

发布时间:2026/10/1 17:15:55来源:尧图网络
随机失活(dropout),批量归一化处理图像(bn1,bn2)
dropout随机失活案例:dropout正则化解释:概述:让神经元以 p概率 随机失活, 防止模型训练时过度依赖某些特征.p的值一般是: 0.2 ~ 0.5, 如果是简单模型可以小一点, 如果是复杂模型可以大一点.细节:1. 未被失活的数据(神经元)会被缩放, 缩放比例是: 1 / (1 - p)2. dropout一般应用于 激活层之后, 即: 加权求和 - 激活函数 - dropout3. dropout只应用于 训练阶段, 在测试阶段失效.设置模型状态的两个函数如下:model.train() - 训练阶段model.eval() - 测试阶段# 导包import torchimport torch.nn as nn# 1. 准备数据集.# 参1: 随机生成1 ~ 10之间的数据, 形状为: 1行4列, 即: 1条样本 4个特征.x torch.randint(1, 10, (1, 4), dtypetorch.float)# 2. 创建隐藏层.linear1 nn.Linear(4, 5)# 3. 先对特征进行 加权求和, 再进行 激活函数处理.x linear1(x) # 加权求和x torch.tanh(x) # 激活函数print(f未被失活的数据: {x})# 4. 创建dropout层(随机失活层), 设置p值(每个神经元随机失活的概率)dp nn.Dropout(p0.5)# 5. 对激活函数处理后的结果进行随机失活.out dp(x)print(f被随机失活的数据: {out})可以看到未失活的权重大了一倍批量归一化批量归一正则化解释:概述:当数据量比较大的时候, 我们会分批次对数据进行训练, 但是如果批次之间的差异较大,导致 模型参数 需要大范围调整, 以便适应不同批次的规律.这样就会导致: 模型的收敛速度变慢, 甚至可能出现梯度震荡, 梯度爆炸...解决思路:1. 对批次数据进行 标准化操作, 相当于减少了 批次数据之间的 差异性, 让数据更稳定.2. 弊端: 可能会丢失某些特征信息, 导致预测结果偏差, 所以引入了 λ(缩放, 当做: 权重) 和 β(平移, 当做: 偏置)f(x) λ * (标准化后的x) β批量归一化层, 常用的 3种方式:BatchNorm1d主要应用于全连接层或处理一维数据的网络例如文本处理。它接收形状为 (N, num_features) 的张量作为输入。BatchNorm2d主要应用于卷积神经网络处理二维图像数据或特征图。它接收形状为 (N, C, H, W) 的张量作为输入。BatchNorm3d主要用于三维卷积神经网络 (3D CNN)处理三维数据例如视频或医学图像。它接收形状为 (N, C, D, H, W) 的张量作为输入。# 导包import torchimport torch.nn as nn# todo 1.定义函数, 演示 BatchNorm2d 处理图像. 输入(N个数, C通道数, H高, W宽)def dm01():# 1. 定义数据集 - 充当输入数据, 模拟图片数据集.# 1张图片, 2个通道, 高: 3像素, 宽: 4像素x torch.rand(size(1, 2, 3, 4))print(fx: {x})# 2. 搭建 批量归一化层.# 参1: 输入的特征数, 等价于: 图片的通道数.# 参2: 小常数, 防止处理时, 分母变为0# 参3: 动量因子, 默认是: 0.1# 参4: 是否需要缩放, 默认是: True, 即: 是否计算λ 和 βbn2d nn.BatchNorm2d(num_features2, eps1e-5, momentum0.1, affineTrue)# 3. 处理图像数据y bn2d(x)print(fy: {y})# todo 2. 定义函数, 演示 BatchNorm1d 处理文本. 输入(N, num_features)def dm02():# 1. 创建数据集 - 充当输入数据, 模拟文本数据集.# 2个文本, 2个特征 - 不能创建1个样本, 无法统计均值和方差input_1d torch.rand(size(2, 2))print(finput_1d: {input_1d})# 2. 创建线性层对象.linear1 nn.Linear(in_features2, out_features3)# 3. 创建BN层对象.# num_features: 输入的特征数.bn1d nn.BatchNorm1d(num_features3)# 4. 具体的处理动作.# 4.1 线性层处理数据.output_1d linear1(input_1d)# 4.2 批量归一化处理.output bn1d(output_1d)# 5. 输出结果.print(foutput: {output})# todo 3. 测试代码if __name__ __main__:# 1. 演示: BatchNorm2d 处理图像.# dm01()# 2. 演示: BatchNorm1d 处理文本.dm02()
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

容器逃逸攻击路径与防御加固实践指南 2026/10/1 19:29:32

容器逃逸攻击路径与防御加固实践指南

1. 容器逃逸到底是什么先讲个我实际经历过的场景。有一次帮客户做安全排查,客户的反馈是“容器里好像被种了东西”,结果我们顺着线索往上一查,发现宿主机也被拿下了。这就是典型的容器逃逸——攻击者本来只是攻破了一个容器,但最后…

阅读更多 →
C++实现优先队列的示例详解 2026/10/1 19:29:32

C++实现优先队列的示例详解

首先,啊,先简单介绍一下优先队列的概念,学数据结构以及出入算法竞赛的相信都对队列这一数据结构十分熟悉,这是一个线性的数据结构.针对队列这一特殊数据结构,有时需考虑队列元素的优先级的关系,即根据用户自…

阅读更多 →
离散时间傅里叶变换核心性质详解:从卷积定理到频谱泄漏 2026/10/1 19:29:31

离散时间傅里叶变换核心性质详解:从卷积定理到频谱泄漏

上篇聊完离散时间傅里叶变换的基本定义和几条最常用的性质——线性、周期性、时移、频移,估计不少朋友已经把DTFT当成了“另一个傅里叶变换”来记。但这门课真正拉开差距的地方,在于它那套性质之间的互相咬合。很多同学学到这里会觉得“每条性质都看懂了…

阅读更多 →
Win10无广告串口调试助手推荐:功能齐全操作简单,SSCOM免安装 2026/10/1 19:29:25

Win10无广告串口调试助手推荐:功能齐全操作简单,SSCOM免安装

串口调试助手这种工具,平时不太起眼,但真正做嵌入式、单片机、模组或者工业设备调试的人,电脑里几乎都会留一个。标题里给出的三个限定词——Win10、无广告、功能齐全、操作简单——其实正好戳中了很多人的痛点:市面上不少串口工具…

阅读更多 →
Blender生成式AI插件实测:5款工具提升渲染与材质工作流 2026/10/1 19:29:25

Blender生成式AI插件实测:5款工具提升渲染与材质工作流

Blender圈子里最近的动静,确实有点意思。渲染器的速度、几何节点的上限,这些固然重要,但真正让我这种天天泡在DCC软件里的人感觉“工作流要变天”的,是一大批生成式AI插件开始往Blender里扎堆。这波插件不是蹭概念,是真…

阅读更多 →
用LabVIEW和NI-VISA自研串口调试助手:从原理到实战 2026/10/1 19:29:25

用LabVIEW和NI-VISA自研串口调试助手:从原理到实战

前阵子调试一块自研的采集板,串口报文里既有十六进制指令又有ASCII状态字符串,手头几个现成的串口调试助手用下来总觉得差口气:没法把收到的报文按协议拆开,没法自动换算成工程量,更没法把一整晚的连续数据带时间戳存下…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉