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

卷积和转置卷积的输出尺寸计算

卷积和转置卷积的输出尺寸计算

卷积

h'是输出的高,h是输入的高,k_h是卷积核的高
w类似

stride=1

h' = h - k_h + padding*2 + 1

通用公式

stride=1就是上面的公式

 h' = (h - k_w + 2*padding + stride)//stride 

一些常见的卷积

  • 高宽不变的卷积kernel_size=3, padding=1,这样的卷积常用于特征提取加深网络层数避免信息丢失,以及在深层网络(如 ResNet)中保持输入输出尺寸一致。
  • 宽高减半的卷积:如kernel_size=3, stride=2, padding=1,一般是将stride=2,若kernel_size=5的话,padding就要为2了。(也可以用kernel_size=2,stride=2的池化来做。两者各有优点:卷积核是可学习的参数,可以提取复杂的特征,但计算量比池化更大;池化没有可学习的参数,计算效率高,同时有一定的平滑特征图的作用,但会丢失一些细节信息)。
  • 1×1的卷积:1×1 卷积改变特征图的通道数,而不改变空间维度(即图像的高和宽)。通常用于降维从而减少计算复杂度,或者升维进行更丰富的特征表示。1×1也可以认为是逐像素的全连接层(其对每个像素位置上不同通道的特征进行加权线性组合。这与全连接层的机制非常相似,都是对输入的所有特征进行线性组合)。

转置卷积

计算公式,其实就是上面公式的逆运算

h' = h*stride - 2*padding + k_w - stride

若想要将图像高宽扩大p倍,就可以让stride=p,然后调整k_w和padding,比如,input image shape: torch.Size([561, 728, 3]) 变为 output image shape: torch.Size([1122, 1456, 3]),先让stride=2,然后kernel_size=4(这样滑动一次只滑过窗口的一半),然后看padding取多少,可以让 -2*padding + k_w - stride = 0,这里padding就取1。

再比如,高宽被缩小32倍后为 torch.Size([1, 512, 10, 15]) ,想要恢复原尺寸:首先stride = 32kernel_size还是取stride的两倍64,然后让 -2*padding + k_w -stride=0,那么padding就取16


http://www.kler.cn/a/311317.html

相关文章:

  • C++《继承》
  • 新版 idea 编写 idea 插件时,启动出现 ClassNotFound
  • 【MySQL】约束
  • 微服务架构面试内容整理-API 网关-Gateway
  • 学术论文写作丨机器学习与深度学习
  • 前端常用布局模板39套,纯CSS实现布局
  • Qt_显示类控件
  • 二叉树的层序遍历-广度优先遍历
  • 专题四_位运算( >> , << , , | , ^ )_算法详细总结
  • 图新地球-将地图上大量的地标点批量输出坐标到csv文件【kml转excel】
  • 汇编(实现C语言程序的调用)
  • TestDeploy v3.0构思
  • Vue2接入高德地图API实现搜索定位和点击获取经纬度及地址功能
  • 【Python报错已解决】ModuleNotFoundError: No module named ‘sklearn‘
  • 离散化c++
  • Django创建模型
  • 力扣(leetcode)每日一题 1184 公交站间的距离
  • 机器人相关知识的本身和价值
  • C++实现的小游戏
  • 关于Element-ui中el-table出现的表格错位问题解决
  • 启发式生成最佳轨迹ReGentS:超32个智能体生成现实世界的安全关键驾驶场景
  • 数据库(DB、DBMS、SQL)
  • 中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
  • 蓝桥杯1.确定字符串是否包含唯一字符
  • VS Code远程连接虚拟机
  • 如何用站群服务器做抢购秒杀平台