【CNN记录】pytorch中BatchNorm2d

news2024/12/23 18:48:30

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)

功能:对输入的四维数组进行批量标准化处理(归一化)
计算公式如下:
在这里插入图片描述
对于所有的batch中样本的同一个channel的数据元素进行标准化处理,即如果有C个通道,无论batch中有多少个样本,都会在通道维度上进行标准化处理,一共进行C次

num_features:通道数
eps:分母中添加的值,目的是计算的稳定性(分母不出现0),默认1e-5
momentum:用于运行过程中均值方差的估计参数,默认0.1
在这里插入图片描述

affine:设为true时,给定开易学习的系数矩阵r和b
track_running_stats:BN中存储的均值方差是否需要更新,true需要更新

举个例子

>import torch
>import torch.nn as nn

>input = torch.arange(0, 12, dtype=torch.float32).view(1, 3, 2, 2)
>print(m)
tensor([[[[ 0.,  1.],
          [ 2.,  3.]],

         [[ 4.,  5.],
          [ 6.,  7.]],

         [[ 8.,  9.],
          [10., 11.]]]])
>bn = nn.BatchNorm2d(3)
>print(bn.weight)
tensor([1., 1., 1.], requires_grad=True)
>print(bn.bias)
tensor([0., 0., 0.], requires_grad=True)

>output = m(input)
>print(output)
tensor([[[[-1.3416, -0.4472],
          [ 0.4472,  1.3416]],

         [[-1.3416, -0.4472],
          [ 0.4472,  1.3416]],

         [[-1.3416, -0.4472],
          [ 0.4472,  1.3416]]]], grad_fn=<NativeBatchNormBackward0>)

上面是使用nn接口计算,现在我们拿第一个数据计算一下验证
公式:
在这里插入图片描述

#先计算第一个通道的均值、方差
>first_channel = input[0][0] #第一个通道
tensor([[0., 1.],
        [2., 3.]])

#1、计算均值方差
>mean = torch.Tensor.mean(first_channel)
tensor(1.5000)  #均值
>var=torch.Tensor.var(first_channel,False)
tensor(1.2500) #方差
#2、按照公式计算
>bn_value  =((input[0][0][0][0] -mean)/(torch.pow(var,0.5)+bn.eps))*bn.weight[0]+bn.bias[0]
#这里就是(0-1.5)/sqrt(1.25+1e-5)*1.0 + 1.0

tensor(-1.3416, grad_fn=<AddBackward0>) 

第一个值都是-1.3416,对上了,其他都是一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贯穿AI生命周期各阶段的道德问题:数据标注部分

随着AI在市场上得到更广泛的采用并被作为各种用例中的工具实现&#xff0c;更多的挑战也应势而生。AI项目遇到了一个长期的关键问题&#xff0c;即合乎道德的AI以及数据中的偏见处理。在AI发展初期&#xff0c;这个问题并不明显。 数据偏见是指数据集中某个元素的代表权重过大或…

Sui开发者网络、测试网和主网的异同之处

Sui在主网正式上线前&#xff0c;发布了两波测试网以及独立的开发者网络供开发者和项目方进行测试。主网与这些网络在部分功能和参数方面有些许不同&#xff0c;本文盘点了这三个网络在功能和参数方面的异同。查看网络信息及更新计划 验证节点集 Sui网络由一组独立的验证节点…

apk反编译检测代码是否混淆

把 apk 当成 zip 并解压&#xff0c;得到 classes.dex 文件&#xff08;有时可能不止一个 dex 文件&#xff0c;但文 件名大多类似&#xff09; 使用 dex2jar 执行如下命令&#xff1a; dex2jar.bat classes.dex 文件路径 得到 classes.dex.jar 然后使用 jd-gui 打开 jar 文件&…

CAN总线

目录 1. 总体概述  1.1 基本概念 1.2 通讯方式 1.3 为什么使用CAN? 1.4 CAN的协议及组成 2. 上帝视角看CAN的通讯过程 2.1 数据传输原理实现 2.3 通信的整个过程 2.2.1 空闲状态 2.2.2 开始数据传输 2.2.3 仲裁机制 2.2.4 位时序 2.2.5 一次数据传输的例子 3.…

【C/C++ 力扣leetcode】4道简单题

文章目录 前言一、寻找正序数组的中位数中位数的概念C语言版C版 二、寻找无序数组的中位数冒泡排序的概念C语言版C版 三、整数反转代码实现原理详解 四、字符串转整数原理详解代码实现 总结 前言 刷题之——Leetcode道简单题&#xff0c;通过这4道简单题&#xff0c;C/C有新的…

MachineLearningWu_12_BuildNNUsingNumpyOrTF

x.1 咖啡机的例子 我们以煮咖啡为例子来做一个判断煮的咖啡是否符合自己预期的实验。假设煮咖啡的好坏有两个因素决定&#xff0c;温度和煮的时间&#xff0c;图中x表示煮的咖啡很好&#xff0c;o表示煮的咖啡不好&#xff0c;我们根据这个实验来建模&#xff0c;并将模型通过…

简述DHCP服务器获取IP地址的过程

简述DHCP服务器获取IP地址的过程 如何搭建DHCP服务 要在Linux系统上搭建DHCP服务器&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1.安装DHCP服务器软件包&#xff1a; sudo yum install dhcp2.配置DHCP服务器&#xff1a; 打开/etc/dhcp/dhcpd.conf文件&#xff0c…

前向传播之——得分函数

前向传播之-得分函数 1.1 得分函数&#xff1a; 剧透:深度学习必备的两个大知识点分别是前向传播和反向传播啦&#xff0c;这里节课我们会先着手把前方传播的所涉及的所有知识点搞定!我相信这部分对于咱们即便没有什么基础的同学来说也是很容易理解的。 得分函数&#xff1a…

Vue从小白到入门

文章目录 &#x1f34b;Vue是什么?&#x1f34b;MVVM思想 &#x1f34b;vue2快速入门&#x1f34b;注意事项 &#x1f34b;数据单向渲染&#x1f34b;数据双向渲染&#x1f34b;作业布置 &#x1f34b;事件绑定&#x1f34b;事件处理机制&#x1f34b;注意事项和细节&#x1f…

Android屏幕适配方案

方案一&#xff1a; 安卓app禁止跟随系统字体大小&#xff0c;显示大小而改变。 1、定义工具类 public final class DisplayUtil {/*** 禁用7.0&#xff08;23&#xff09;以上显示大小改变和文字大小*/public static Resources disabledDisplayDpiChange(Resources res) {C…

openGauss学习笔记-07 openGauss 语法

文章目录 openGauss学习笔记-07 openGauss 语法7.1 帮助7.2 SQL语句格式7.3 SQL语法ABORTALTER AUDIT POLICYALTER DATA SOURCEALTER DATABASEALTER DEFAULT PRIVILEGESALTER DIRECTORYALTER EXTENSIONALTER FOREIGN TABLEALTER FUNCTIONALTER GROUPALTER INDEXALTER LARGE OBJ…

APB 3

一. APB3概述 APB协议是AMBA总线协议系列的一部分&#xff0c;其接口简单、功耗较低&#xff0c;常用于连接低带宽的高性能外设&#xff0c;每次数据传输至少需要两个时钟周期&#xff0c;且无法同时进行读写操作。 APB作为系统中的从机&#xff0c;可以通过AHB、AHB-Lite、AXI…

RPC分布式网络通信框架(二)—— moduo网络解析

文章目录 一、框架通信原理二、框架初始化框架初始化 三、调用端&#xff08;客户端&#xff09;调用端框架调用端主程序 四、提供端&#xff08;服务器&#xff09;提供端主程序提供端框架NotifyService方法Run方法muduo库的优点网络代码RpcProvider::OnConnection业务代码Rpc…

go 爬虫速度控制

go 爬虫速度控制 使用go语言用原生net/http写爬虫如何优雅的控制并发和请求速度控制并发限流并发和限流的区别简单说明有了并发控制为什么还要限流 最总代码 使用go语言用原生net/http写爬虫如何优雅的控制并发和请求速度 go程序的执行效率相对python要快的多&#xff0c;且占…

如何在半年内找到理想的数据库内核开发工作?

学习和提升技能&#xff1a;着重学习数据库原理、数据结构、算法和数据库内核开发相关的知识。掌握SQL语言和数据库设计&#xff0c;了解常见的数据库系统和底层技术。参加培训、在线课程或自学&#xff0c;不断提升自己的技术能力。 我这里刚好有嵌入式、单片机、plc的资料需…

三、CAS认证流程

一、相关概念 TGC(Ticket-granting cookie)&#xff1a;存放用户身份认证的cookie&#xff0c;在浏览器和CAS server用来明确用户身份的凭证&#xff1b;ST(Service Ticket)&#xff1a;CAS服务器通过浏览器分发给客户端服务器的票据&#xff0c;一个特定服务只能有一个唯一的…

微信小程序开发学习之页面导航(声明式导航和编程式导航)

微信小程序之页面导航&#xff08;声明式导航和编程式导航&#xff09; 1.0 页面导航1.1. 声明式导航1.1.1. 导航到tabBar页面1.1.2. 导航到非tabBar页面1.1.3. 后退导航 1.2. 编程式导航1.2.1. 导航到tabBar页面1.2.2. 导航到非tabBar页面1.2.3. 后退导航 1.3. 导航传参1.3.1.…

手把手教你用 NebulaGraph AI 全家桶跑图算法

前段时间 NebulaGraph 3.5.0 发布&#xff0c;whitewum 吴老师建议我把前段时间 NebulaGraph 社区里开启的新项目 ng_ai 公开给大家。 所以&#xff0c;就有了这个系列文章&#xff0c;本文是该系列的开篇之作。 ng_ai 是什么 ng_ai 的全名是&#xff1a;Nebulagraph AI Sui…

安装RabbitMQ 详细步骤

我这里是在Linux系统里面安装的按照步骤即可 1. 安装Socat&#x1f349; 在线安装依赖环境&#xff1a; yum install gcc yum install socat yum install openssl yum install openssl-devel2. 安装Erlang&#x1f349; 去官网下载一下安装包&#xff0c;将安装包拉到Linux系…

苹果APP安装包ipa如何安装在手机上

苹果APP的安装比安卓复杂且困难&#xff0c;很多人不知道如何将ipa文件安装到手机上。以下是几种苹果APP安装在iOS设备的方式&#xff0c;供大家参考。 一、上架App Store 这是最正规的方式。虽然审核过程复杂、时间较长&#xff0c;且审核条件较为苛刻&#xff0c;但借助第三…