当前位置: 首页 > news >正文

AI学习记录 - 怎么理解 torch 的 torch.nn.BatchNorm2d

画图不易,有用就点个赞

这里创建了一个随机张量,形状为 (4, 3, 4, 4),分别对应

形状为 (batch_size, num_channels, height, width)
batch_size:批次
num_channels: 通道(什么是通道看上一章节)

input_tensor = torch.randn(4, 3, 4, 4)

创建了个下面这样子的东西
在这里插入图片描述

计算归一化是需要参考值的,因为需要知道最大值最小值,已经参与计算的数量,参考值来自于哪里呢,如下

在这里插入图片描述

合并起来,可以看到 num_channels = 3,所以分别计算3次
在这里插入图片描述

计算均值和方差公式如下:
在这里插入图片描述

看不懂是不是,我也看不懂,举个简单的例子

假设一批数字为 [3, 7, 2, 9, 4]

均值

在这里插入图片描述

方差

在这里插入图片描述

然后进行归一化

在这里插入图片描述

计算完之后形状不会改变,只是值变了而已,上面新的数字组合起来均值接近0,方差接近1。其实认识这个计算过程意义不是很大,你就当在实际模型运算的时候,肯定会产生一些很大的值很小的值,假如生成的数据区间在[ 50,120 ],我们需要将这些值传入到激活函数里面,把 50 到120 传sigmoid激活函数里面,基本上都是0.9999…,数据之间根本没差异。

sigmoid函数,不进行归一化
在这里插入图片描述

sigmoid函数,归一化,将数字移动到激活函数有明显变化的区域,这就有差异了,充分发挥了激活函数的作用
在这里插入图片描述


http://www.mrgr.cn/news/11743.html

相关文章:

  • JavaScript 动画库
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • 37 使用LDT(3)
  • 03_React 收集表单数据和 组件生命周期
  • 【Qt】容器类控件GroupBox
  • Python自动化办公2.0 课程更新
  • 切换JDK版本
  • Python邮箱发送如何配置SMTP服务发送邮件?
  • [linux][软件]Ubuntu部署SVN服务器
  • 一元线性回归梯度下降代码
  • nginxlvshaproxy负载均衡的区别
  • 关于如何在已有qt项目中添加该项目的单元测试工程
  • [Qt5] 使用QtConcurrent::run在异步线程中执行耗时函数
  • ORACLE EBS R12系统的安装及维护案例
  • 【不合理的递归区间】快排递归引发区间错误,除以0未定义
  • 机器学习:K-means算法(内有精彩动图)
  • MySQL运维学习(2):主从复制
  • 在 Monaco Editor 中自定义右键菜单并支持多级菜单
  • 对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,我想说
  • 新手科研人必看! 2024年8月学术论文疑惑解答,迅速提升你的SCI投稿质量。