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

PyTorch nn.Conv2d 空洞卷积


torch.nn.Conv2d() 中 dilation 参数控制卷积核的间隔

dilation controls the spacing between the kernel points

  • 当 dilation=1 时, 表示卷积核没有额外的空白间距, 也就是标准卷积
  • 当 dilation>1 时, 表示空洞卷积(dilated convolution)

动画演示:
dilation

手动计算

以 2*2 的卷积核和 dilation=2 为例, 等效卷积核的大小为:

Step-1

左上角区域卷积: 1 * 2 + 3 * 0 + 3 * 1 + 1 * 3 = 8, 卷积核中的空白间隔不参与运算, 当然也可以将其置为 0, 等效为 3 * 3 的卷积运算

Step-2

Step-3

Step-4

结果:

整体


使用 PyTorch 计算

import torch
from torch import nndata = [[1, 2, 3, 0],[0, 1, 2, 3],[3, 0, 1, 2],[2, 3, 0, 1]
]
# 单通道 4*4 图片
# minibatch=1
inp = torch.tensor(data).reshape(1, 1, 4, 4).to(torch.float32)conv = nn.Conv2d(1, 1, kernel_size=2, dilation=2, bias=False)
conv.weight.data = torch.tensor([[2, 0], [1, 3]]
).reshape(1, 1, 2, 2).to(torch.float32)oup = conv(inp)
print(oup)

输出

tensor([[[[ 8., 10.],[ 2.,  8.]]]], grad_fn=<ConvolutionBackward0>)

空洞卷积可以扩大感受野, 2*2 的卷积核, dilation 参数设为 2, 可以提取特征图中 3*3 的内容, 却只有 2*2 的卷积运算量

空洞卷积会丢失局部信息

http://www.lryc.cn/news/472732.html

相关文章:

  • 像素、分辨率、PPI(像素密度)、帧率的概念
  • 两步GMM计算权重矩阵
  • leetcode452. 用最少数量的箭引爆气球
  • 【Android】使用TextView实现按钮开关代替Switch开关
  • (49)MATLAB实现迫零均衡器原理与代码
  • 滚柱导轨出现异常损坏的原因
  • 架构师考试系列(6)论文专题:论分布式架构设计
  • leetcode hot100【LeetCode 230. 二叉搜索树中第K小的元素】java实现
  • 从0开始深度学习(23)——图像卷积
  • 编程小白如何成为大神
  • JetCache启动循环依赖分析
  • 【科研绘图】3DMAX管状图表生成插件TubeChart使用方法
  • 基于SSM土家风景文化管理系统的设计
  • C++超强图片预览器
  • 网络搜索引擎Shodan(2)
  • 【Tableau】
  • 分类与有序回归
  • Mac如何实现高效且干净的卸载应用程序
  • LaTex中的常用空格命令
  • k8s 1.28.2 集群部署 Thanos 对接 MinIO 实现 Prometheus 数据长期存储
  • 域渗透AD渗透攻击利用 python脚本攻击之IPC连接 以及 python生成exe可执行程序讲解方式方法
  • 行为设计模式 -命令模式- JAVA
  • 使用redis实现发布订阅功能及问题
  • Debug日程工作经验总结日程常用
  • Apache Paimon主键表的一些最佳实践
  • React面试常见题目(基础-进阶)
  • AI赋能:开启你的副业创业之路
  • 前端文件上传组件流程的封装
  • 图像篡改研究
  • wlan的8种组网方式的区别