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

15.土堆说卷积操作(stride、padding)

土堆说卷积操作(可选看)

卷积神经网络中Padding和Stride的概念,Padding用于解决图像边缘信息丢失问题,保持输出矩阵尺寸;Stride则影响卷积的步进,改变输出大小。通过调整这两者,可以控制卷积层的输出特性。

这节来讲解卷积层 :Convolution Layers

先进入pytorch官方网站地址:torch.nn — PyTorch 1.8.1 documentation

主要讲解 nn.Conve2d ,pytorch官方网站地址:Conv2d — PyTorch 1.8.1 documentation

torch.nn 和 torch.nn.functional 的区别:前者是后者的封装,更利于使用

点击 torch.nn.functional - Convolution functions - conv2d 查看参数

image-20240725183319235

stride(步进)

可以是单个数,或元组(sH,sW) — 控制横向步进和纵向步进

卷积操作

卷积操作介绍

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当 stride = 2 时,横向和纵向都是2,输出是一个2×2的矩阵

卷积操作实战

要求输入的维度 & reshape函数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • input:尺寸要求是batch,几个通道,高,宽(4个参数)
  • weight:尺寸要求是输出,in_channels(groups一般为1),高,宽(4个参数)

使用 torch.reshape 函数,将输入改变为要求输入的维度

实现上图代码

import torch
import torch.nn.functional as F
 
input =torch.tensor([[1,2,0,3,1],
                     [0,1,2,3,1],
                     [1,2,1,0,0],
                     [5,2,3,1,1],
                     [2,1,0,1,1]])   #将二维矩阵转为tensor数据类型
# 卷积核kernel
kernel = torch.tensor([[1,2,1],
                       [0,1,0],
                       [2,1,0]])
 
# 尺寸只有高和宽,不符合要求
print(input.shape)  #5×5
print(kernel.shape)  #3×3
 
# 尺寸变换为四个数字
input = torch.reshape(input,(1,1,5,5))  #通道数为1,batch大小为1
kernel = torch.reshape(kernel,(1,1,3,3))
print(input.shape)
print(kernel.shape)
 
output = F.conv2d(input,kernel,stride=1)  # .conv2d(input:Tensor, weight:Tensor, stride)
print(output)

image-20240725200134795

输出结果为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当将步进 stride 改为 2 时:

output2 = F.conv2d(input,kernel,stride=2)
print(output2)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

padding(填充)

在输入图像左右两边进行填充,决定填充有多大。可以为一个数或一个元组(分别指定高和宽,即纵向和横向每次填充的大小)。默认情况下不进行填充

padding=1:将输入图像左右上下两边都拓展一个像素,空的地方默认为0

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码实现:

output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
d(input,kernel,stride=1,padding=1)
print(output3)


[外链图片转存中...(img-xxjUZlUQ-1724861517755)]

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

相关文章:

  • 跟我学C++中级篇——RAII
  • Linux驱动开发第2步_“物理内存”和“虚拟内存”的映射
  • 【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • 【ict基础软件赛道】真题-50%openGauss
  • Elasticsearch 8.16.0:革新大数据搜索的新利器
  • 【数据库系列】 Spring Boot 集成 Neo4j 的详细介绍
  • buuctf [MRCTF2020]hello_world_go
  • 【最新】高效可用的Docker仓库源
  • 【力扣】验证回文串
  • Flask restful 前后端分离和 restful 定义
  • [BFS广度优先搜索] 迷宫
  • 如何用SpringBoot构建摇滚乐鉴赏网站?音乐分享+乐评社区,实现个性化推荐!
  • npm pack使用
  • 计算机基础知识复习8.29
  • 深度学习--复制机制
  • 深度学习——LLM大模型分词
  • MySQL编译安装
  • Linux:NAT等相关问题
  • 微信小程序利用canva进行大图片压缩
  • 对标GPT4o,智谱推出新一代基座大模型 GLM-4-Plus
  • Python反向传播导图
  • 如何通过日志或gv$sql_audit,分析OceanBase运行时的异常SQL
  • 如何理解进程
  • 渲染引擎实践 - UnrealEngine引擎中启用 Vulkan 和使用 Renderdoc 抓帧
  • Nginx SSL密码短语配置指南:增强负载均衡安全性
  • 王立铭脑科学50讲:49,灵魂和肉体,灵魂离体的感觉是怎么回事