深度学习Day-24:ResNeXt-50算法思考

  🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客
 🍖 原作者:[K同学啊 | 接辅导、项目定制]

要求:

  1. 阅读给出代码,判断是否存在错误,正确与否都请给出你的思考;
  2. 查找相关资料、逐步推理模型、写下思考过程
# 定义残差单元
def block(x, filters, strides=1, groups=32, conv_shortcut=True):if conv_shortcut:
shortcut = Conv2D(filters * 2, kernel_size=(1, 1), strides=strides, padding='same', use_bias=False)(x)
# epsilon为BN公式中防止分母为零的值
shortcut = BatchNormalization(epsilon=1.001e-5)(shortcut)
else:
# identity_shortcut
shortcut = x
# 三层卷积层
x = Conv2D(filters=filters, kernel_size=(1, 1), strides=1, padding='same', use_bias=False)(x)
x = BatchNormalization(epsilon=1.001e-5)(x)
x = ReLU()(x)
# 计算每组的通道数
g_channels = int(filters / groups)
# 进行分组卷积
x = grouped_convolution_block(x, strides, groups, g_channels)x = Conv2D(filters=filters * 2, kernel_size=(1, 1), strides=1, padding='same', use_bias=False)(x)
x = BatchNormalization(epsilon=1.001e-5)(x)
x = Add()([x, shortcut])
x = ReLU()(x)
return x# 堆叠残差单元
def stack(x, filters, blocks, strides, groups=32):
# 每个stack的第一个block的残差连接都需要使用1*1卷积升维
x = block(x, filters, strides=strides, groups=groups)
for i in range(blocks):
x = block(x, filters, groups=groups, conv_shortcut=False)
return x

问题:如果conv_shortcut=False,那么执行“x=Add()…”语句时,通道数不一致的,为什么不会报错?

思考分析

        在ResNext网络中,将conv_shortcut参数设置为False,表示使用identity_shortcut而不是Conv2D层作为快捷连接。

        对于定义残差单元block模块,Add()是x和shortcut相加,x通道数是filter*2。对于shortcut,conv_shortcut为True则是filters*2,否则是原始输入通道数。

        最后对于堆叠残差模块stack,第二次调用block时,conv_shortcut参数是False,使用的是identity_shortcut,这种情况下,快捷连接将直接传递输入x给块的最后一层。因此,在执行“x=Add()…”语句时,快捷连接的通道数与该层的通道数不一致。

        但是,由于Add()层在通道数不同时会自动对快捷连接进行零填充,所以不会出现尺寸不匹配的错误。此外,这种零填充不会对训练产生任何影响,因为填充的值不会接收任何梯度更新。

        总之,Add 层具有自动广播机制,可以在计算时自动扩展较小张量的形状以匹配较大张量的形状,因此即使通道数不一致也不会报错。

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

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

相关文章

如何减少开发过程中的bug-数据库篇

1.1慢查询 1.1.1 是否命中索引 提起慢查询,我们马上就会想到加索引。如果一条SQL没加索引,或者没有命中索引的话,就会产生慢查询。 索引哪些情况会失效? 查询条件包含or,可能导致索引失效 如果字段类型是字符串&am…

LeetCode 0724.寻找数组的中心下标:前缀和(时空复杂度O(n)+O(1))

title: 724.寻找数组的中心下标 date: 2024-07-08 13:22:58 tags: [题解, LeetCode, 简单, 数组, 前缀和] 【LetMeFly】724.寻找数组的中心下标:前缀和(时空复杂度O(n)O(1)) 力扣题目链接:https://leetcode.cn/problems/find-pi…

数据结构--二叉树相关习题5(判断二叉树是否是完全二叉树 )

1.判断二叉树是否是完全二叉树 辨别: 不能使用递归或者算节点个数和高度来判断。 满二叉树可以用高度和节点来判断,因为是完整的。 但是完全二叉树前面是满的,但是最后一层是从左到右连续这种 如果仍然用这种方法的话,如下图…

暑期备考2024小学生古诗文大会:吃透真题和知识点(持续)

2024年上海市小学生古诗文大会的自由报名初赛将于10月19日(星期六)正式开始,还有3个多月的时间。 为帮助孩子们备考,我持续分享往年上海小学生古诗文大会真题,这些题目来自我去重、合并后的1700在线题库,每…

加密与安全_密钥体系的三个核心目标之完整性解决方案

文章目录 Pre机密性完整性1. 哈希函数(Hash Function)定义特征常见算法应用散列函数常用场景散列函数无法解决的问题 2. 消息认证码(MAC)概述定义常见算法工作原理如何使用 MACMAC 的问题 不可否认性数字签名(Digital …

SketchUp Pro 2024:现代科技之诗意体验

在那遥远的唐朝,李白曾以诗酒为伴,游历山川,挥洒才情。而今,若李白穿越时空,手握现代科技之利器——SketchUp Pro 2024,定会以诗意之笔,描绘这款软件的神奇与魅力。 初识SketchUp Pro 2024 初…

Vue Router:History 模式 vs. Hash 模式

在开发 SPA(单页应用程序)时,路由管理是不可或缺的一部分。Vue.js 框架中的 Vue Router 提供了两种主要的路由模式:History 模式和 Hash 模式。理解这两种模式的区别及其实现方式,对于开发和部署 Vue 应用至关重要。 …

k8s record 20240708

一、PaaS 云平台 web界面 资源利用查看 Rancher 5台 CPU 4核 Mem 4g 100g的机器 映射的目录是指docker重启后,数据还在 Rancher可以创建集群也可以托管已有集群 先docker 部署 Rancher,然后通过 Rancher 部署 k8s 想使用 kubectl 还要yum install 安…

如何分析前后端bug?

如何分析前后端bug,我来支你1️⃣招 📝一般通过查看接口的方式分析前后端bug。 . 【方法】: web项目,用浏览器自带的F12抓包看接口请求。 app客户端,一般用fiddler等工具进行抓包接口。 . ✅用经典的电商项目举例&…

应用软件受到网络攻击怎么办?

大家都知道在目前的互联网社会中,大型的网络游戏与电商网站企业是网络攻击的重要对象,同时软件应用也无法避免地会受到各种网络攻击,那么当我们的软件应用被攻击时,该怎么办呢? 首先我们可以使用高防CDN,安…

2. 年龄问题

年龄问题 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 S 夫人一向很神秘。这会儿有人问起她的年龄,她想了想说: "2020 年前,我丈夫的年龄刚好是我的 22 倍,…

ATA-8035射频功率放大器在声动力疗法中的应用

声动力疗法是一种基于声波能量的治疗方法,广泛应用于医疗和美容领域。它利用高强度聚焦的声波来实现切割、破碎或加热组织,以治疗各种疾病和美容问题。在声动力疗法中,射频功率放大器起着至关重要的作用,它负责提供足够的能量来激…

达梦数据库的系统视图v$auditrecords

达梦数据库的系统视图v$auditrecords 在达梦数据库(DM Database)中,V$AUDITRECORDS 是专门用来存储和查询数据库审计记录的重要系统视图。这个视图提供了对所有审计事件的访问权限,包括操作类型、操作用户、时间戳、目标对象等信…

详解 | 什么是GeoTrust

GeoTrust是一家全球知名的数字证书颁发机构(Certificate Authority,简称CA),专注于提供SSL/TLS证书和其他相关的网络安全产品。 1、历史背景: GeoTrust成立于2001年,最初作为一个独立的公司运营。2006年&a…

js+spring boot实现简单前后端文件下载功能

jsboot项目实现自定义下载 一、前端页面 1、先导入axios的js包 2、注意axios响应的格式:result.data.真实的数据内容 3、这里请求的url就是你boot项目的getMapping的url,保持一致即可 4、如果想在后端设置文件名,那么后端生成后&#xf…

目标检测算法介绍来了!

随着人工智能技术的迅猛发展,目标检测算法在计算机视觉领域扮演着越来越重要的角色。它广泛应用于安防监控、自动驾驶、医学影像分析、机器人视觉等多个领域,极大地推动了智能化进程。本文将对目标检测算法进行深入的探讨,包括其基本原理、发…

使用 Streamlit 和 asyncio 模块进行异步编程

概述 Streamlit 是一个用于构建数据应用程序的强大工具,但它本身并不直接支持异步编程。然而,通过结合 Python 的 asyncio 模块,我们可以在 Streamlit 应用中实现异步处理,从而提高应用的响应性和效率。 为什么需要异步编程 在…

安卓应用开发学习:腾讯地图SDK应用改进,实现定位、搜索、路线规划功能集成

一、引言 我的上一篇学习日志《安卓应用开发学习:通过腾讯地图SDK实现定位功能》记录了利用腾讯地图SDK实现手机定位功能,并能获取地图中心点的经纬度信息。这之后的几天里,我对《Android App 开发进阶与项目实战》一书第九章的内容深入解读…

【深度学习实战(44)】Anchor based and Anchor free(无锚VS有锚)

1 anchor-based 深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗…

leetcode--层数最深叶子节点的和

leetcode地址:层数最深叶子节点的和 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。 示例 1: 输入:root [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出:15 示例 2: 输入&#xff…