43、实战 - 手写一个 batch norm 算法

本文介绍了如何手写一个批量归一化(Batch Normalization, BN)算法,作为CNN网络中的核心算法之一。BN在推理阶段,基于训练时学到的全局均值和方差对输入数据进行归一化。在Python中实现BN算法,包括γ和β参数,用于数据的尺度变换和模型的灵活性提升。BN操作主要作用于数据的HW维,与池化计算类似,对于每个通道独立进行。文章提供了Python代码示例,并提到了C++版本的实现链接。" 106166897,9584524,C++使用带参宏计算两数相除余数,"['C++', '编译预处理']
摘要由CSDN通过智能技术生成

这是我们手写的 CNN 网络中第三个经典算法。

在 resnet50 这个神经网络中,总共有 conv , bn, relu, pooling, fc(全连接), softmax 这几个经典算法。

而conv,pooling 在之前的章节已经手写过了,relu 属于一行代码就可以写完的算法,很简单可以暂时忽略,fc(全连接)可以直接用 conv 替换,或者简化一下 conv 的逻辑就可以,softmax 的算法在后面实践时可用可不用。

也就是说,核心算法只剩下 bn 这一个了,这么一看,其实一个经典的神经网络算法并不是多,关键就是如何灵活使用,以及如果做算法等价变换。

在手写完 bn 这个算法之后,后面就基本可以进入到网络结构方面的内容,然后一步步的将网络结构用我们手写的算法搭建起来,这样离完成一个神经网络的推理就不远了,继续加油。

还是先继续 bn 这一个算法的实现吧,它的原理和背景参考前两节内容。

算法实现介绍

bn 的算法说的是在 mini-batch 中进行归一化,这里我们只做推理,不做训练,因此我们针对推理部分来写。

首先,推理和训练的区别就在于,训练时输入给模型的是很多张图片,用我们习惯的数据表示方法是[n, h, w, c], 其中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值