普通的2D Average pooling是怎么进行backward的呢?

news2024/10/7 7:34:59

 

 

二维平均池层计算损失相对于其输入张量的梯度,方法是将损失相对于输出张量的梯度均分在输入子区域,这些子区域在前向传播中被用来计算平均值。

由于平均集合计算的是每个输入子区域的平均值,所以子区域中的每个元素对平均值的贡献是相同的。因此,在反向传播过程中,与子区域中每个元素有关的损失梯度等于与相应的输出元素有关的损失梯度除以子区域的大小

import torch
import torch.nn as nn

avg_pool = nn.AvgPool2d(kernel_size=(2, 2), stride=(2, 2))

x = torch.randn(1, 1, 4, 4, requires_grad=True)
y = avg_pool(x)

# Compute some loss
loss = y.sum()
print(loss) # tensor(-0.1558, grad_fn=<SumBackward0>)

# Compute gradients
loss.backward()

# Check gradients
print(x.grad)
# tensor([[[[ 0.0625,  0.0625, -0.1875, -0.1875],
#           [ 0.0625,  0.0625, -0.1875, -0.1875],
#           [-0.1250, -0.1250, -0.0625, -0.0625],
#           [-0.1250, -0.1250, -0.0625, -0.0625]]]])

结果就是:

tensor([[[[0.2500, 0.2500, 0.2500, 0.2500],
          [0.2500, 0.2500, 0.2500, 0.2500],
          [0.2500, 0.2500, 0.2500, 0.2500],
          [0.2500, 0.2500, 0.2500, 0.2500]]]])

解读:

在这个例子中,创建了一个具有kernel_size=(2 ,2) and stride=(2 ,2)的AvgPool2d层。一个形状为(1 ,1 ,4 ,4)且require_grad=True的输入张量x通过该层,产生一个形状为(1 ,1 ,2 ,2)的输出张量y。

损失被计算为y中所有元素之和,其值为-0.1558。在反向传播过程中,损失相对于x的梯度是通过将损失相对于y的梯度分布在用于计算y的平均值的(2,2)输入子区域来计算的。

在这种情况下,由于y中有四个输出元素,它们的梯度是[1 ,1 ,1 ,1]。这些梯度分布在各自的(2 ,2)输入子区域,子区域的每个元素得到的梯度等于其对应的输出元素的梯度除以(2 * 2) = 4。因此,x.grad中的元素的值为[1/4 ,1/4 ,1/4 ,1/4]。

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

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

相关文章

Java Servlet_HTTP

今日内容 零、 复习昨日 一、Servlet 二、HTTP 三、HttpServlet 零、 复习昨日 见晨考 一、Servlet 1.1 介绍 javaweb开发,就是需要服务器接收前端发送的请求,以及请求中的数据,经过处理(jdbc操作),然后向浏览器做出响应. 我们要想在服务器中写java代码来接收请求,做出响应,我…

SignOff Criteria——AOCV(Advanced OCV) introduction

文章目录 1. O v e r v i e w Overview Overview2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction2.1 G B A − A O C V GBA-AOCV GBA−AOCV2.1.1 A b o u t L o g i c a l D e p t h About\ Logical\ De…

第六章 Iptables与Firewalld防火墙

第六章 Iptables与Firewalld防火墙 一、Iptables 1、策略与规则链 &#xff08;1&#xff09;、防火墙策略规则的设置 一种是“通”即放行&#xff0c;另一种是“堵”即阻止。 当防火墙的默认策略为拒绝时&#xff08;堵&#xff09;&#xff0c;就要设置允许规则通&#x…

NECCS|全国大学生英语竞赛C类|听力|短对话|14:20~15:30

目录 一、短对话 1. 定位词 2. 场景词汇 &#xff08;1&#xff09;餐馆用餐 &#xff08;2&#xff09;商场用语 &#xff08;3&#xff09;校园用语 &#xff08;4&#xff09;图书馆用语 二、题目类型 1. 人物类 考点聚焦 2. 地点类 主要涉及 3. 数字类 4. 主题…

【数据库】JDBC编程

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 目录 前言 什么是JDBC&#xff1f; JDBC工…

sql注入(三)绕过方法及防御手段

一、sql注入的绕过方法 1.注释符过滤绕过 常用的注释符有&#xff1a; 1&#xff09;-- 注释内容 2&#xff09;# 注释内容 3&#xff09;/* 注释内容 */ 绕过方法 构造闭合&#xff1a; ?id1 and sql语句 and 11 这样接收源码前面的引号被 id1 中的后引号所闭合&…

关于MPU的笔记

MPU&#xff08;memory protection unit&#xff09;内存保护单元。这些系统必须提供一种机制来保证正在运行的任务不破坏其他任务的操作。即要防止系统资源和其他一些任务不受非法访问。嵌入式系统有专门的硬件来检测和限制系统资源的访问。它能保证资源的所有权&#xff0c;任…

unity 性能优化之画质分级

如果你的游戏兼容多平台&#xff0c;或者当前平台的设备也有硬件差距&#xff0c;比如低端设备就是带不动你的画质&#xff0c;无论如何你如何优化就是带不动。这种情况下&#xff0c;我们可以考虑对画质进行分级&#xff0c;减少一些特性&#xff0c;来提高运行质量。接下来我…

JavaWeb《HTML基础标签》

本笔记学习于Acwing平台 MDN官方文档https://developer.mozilla.org/zh-CN/ 目录 1. html文件结构 2. 文本标签 3. 图片 4. 音频和视频 5. 超链接 6. 表单 7. 列表 8. 表格 9. 语义标签 10. 特殊符号 1. html文件结构 文档结构 html的所有标签为树形结构&#xff…

AI模型推理(3)——ModelMesh使用

参考&#xff1a; ModelMesh installation - KServe Documentation Website ModelMesh Overview - KServe Documentation Website 前言 Kserve提供了“Serverless”和“ModelMesh”两种安装模式。其中Serverless是通过Knative组件实现动态扩缩容等功能。而ModelMesh则是另一…

华南X99F8D开不了机——主板出现错误码67的解决方案

华南X99F8D开不了机——主板出现错误码67的解决方案 前言 笔者的双路e5&#xff1a;大数据双路e5主机搭建&#xff1a;2696v3256g内存 配置&#xff1a; 主板&#xff1a;x99f8d CPU&#xff1a;e5 2696v3 *2 【36核72线程】 内存条&#xff1a;DDR4 ECC 32G *8 【256G】 显…

Nginx + LVS + KeepAlived实现高可用集群

文章目录 一、名词解释1、高可用集群2、LVS3、Keepalived 二、搭建流程1、安装Docker2、安装Nginx3、安装Keepalived4、编写nginx_check.sh脚本 一、名词解释 1、高可用集群 对于中小型互联网公司&#xff0c;产品所承受的请求量还是比较低的&#xff0c;所以一般使用单节点N…

碳中和专题:智慧城市建设能否提高碳生产率?—基于中国智慧城市试点的准自然实验

一.研究内容 目前&#xff0c;中国面临着如何在保证经济增长的前提下实现减排目标的困境。智能城市建设作为一种新型的城市发展模式&#xff0c;有可能成为解决这一问题的关键。本文使用多周期双重差分DID模型进行实证分析&#xff0c;旨在评估智能城市试点政策对碳生产率的影响…

论文笔记:Model-Contrastive Federated Learning

0 简介 论文&#xff1a;Model-Contrastive Federated Learning 代码&#xff1a;https://github.com/QinbinLi/MOON 相关链接&#xff1a;本文主要是将SimCLR对比学习的思想迁移到联邦学习中&#xff0c;关于SimCLR的介绍见https://blog.csdn.net/search_129_hr/article/deta…

最好的物联网教程:软硬结合——从零打造物联网

在大学里不同专业有着不同的追求&#xff1a;机械类与强电类专业学生追求的是 “机电合一” &#xff0c;既懂机械又懂电气&#xff0c;整个电气机械自动化便能打通。弱电类专业学生追求的是 “软硬结合” &#xff0c;既懂硬件又懂软件&#xff0c;整个电子产品便能打通。我作…

唱作音乐人朱卫明新歌全网首发,当初恋遇到《龙仙街》

今年唱作音乐人朱卫明正式出道25周年了&#xff01;为纪念这个生涯里程碑&#xff0c;朱卫明近日在酷狗音乐首发全新单曲《龙仙街》&#xff0c;上酷狗搜索“朱卫明”&#xff0c;即可抢先收听。 这首歌是继《酒吧情歌》《不爱她》《只要陪着你》《有缘无分》《断了吧》《疯狂爱…

Linux——基础IO

目录 C语言文件操作 fprintf​编辑 Linux下的文件操作(文件的系统调用接口) open open的第三个参数 open的第二个参数 write read 文件描述符fd 进程与被打开文件的关系(理解的关键) 见见猪跑 fd文件描述符的分配规则 结论 重定向 输入重定向原理 输出重…

Linux线程:互斥锁mutex的使用

1. 同步 & 互斥 &#xff08;1&#xff09;同步 多个进程或线程按照一定的执行顺序完成某一任务&#xff1b;如B任务依赖A任务产生的数据。 &#xff08;2&#xff09;互斥 临界资源同一时刻只能被一个进程或线程使用。 2. 临界资源 和 临界区 &#xff08;1&#xff…

feign远程调用原理

目录 一、简介 二、调用流程分析 2.1 添加注解 2.2 Import(FeignClientsRegistrar.class)&#xff0c; 2.3 代理创建流程 2.4 代理调用 一、简介 feign是springCloud全家桶中的远程调用组件&#xff0c;其底层主要依赖于Java的动态代理机制&#xff0c;然后基于http client…

【软件测试】全网火爆,实战Web项目前后台的bug定位(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 系统整体架构 Se…