新闻详情

新闻详情

首页 / 资讯中心 / 详情

17.卷积操作

发布时间:2026/10/2 11:51:40来源:尧图网络
17.卷积操作
神经网络模块-卷积层卷积层分类:Conv1d: 一维卷积处理信号数据Conv2d: 二维卷积处理图像数据最常用Conv3d: 三维卷积处理视频等体数据torch.nn vs torch.nn.functional模块封装torch.nn是对底层卷积操作的高级封装提供更友好的API接口与functional关系类似于方向盘与齿轮的关系nn模块封装了functional的底层实现细节学习建议日常使用只需掌握torch.nn即可functional层主要用于底层研究如下torch.nn和torch.nn.functional是一一对应的关系。torch.nn.functional.Conv2d二维卷积函数参数input输入张量需满足(minibatch, in_channels, iH, iW)形状weight卷积核形状为(out_channels, in_channels, kH, kW)stride卷积步长默认1padding填充默认0dilation膨胀系数默认1groups分组数默认1卷积计算演示图像(假设除了输入张量和卷积核其他参数都是默认值输入图像与卷积核输入图像为55矩阵每个数字代表像素颜色值。卷积核为33矩阵。卷积核先叠在输入图像的左上角两者的左上角对齐进行对应位相乘后相加得到一个输出值。然后将卷积核向右横向移动一格得到下一个输出值卷积核向右横向一格一格移动到顶后纵向移动一格并且是从下一行的最左侧开始继续计算输出值。上图最右边的3*3矩阵是输出矩阵。如下红色线条便是卷积核的移动走位。代码实现# -*- coding: utf-8 -*-# 作者小土堆# 公众号土堆碎念importtorchimporttorch.nn.functionalasFinputtorch.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]])kerneltorch.tensor([[1,2,1],[0,1,0],[2,1,0]])inputtorch.reshape(input,(1,1,5,5))kerneltorch.reshape(kernel,(1,1,3,3))print(input.shape)print(kernel.shape)outputF.conv2d(input,kernel,stride1)print(output)执行如上代码控制台输出如下。如上输出结果和我们演示中的如下的计算的输出矩阵是一致的stride参数控制卷积核移动步长可以是单个数或元组sH, sWstride1时横向和纵向都移动1位stride2时横向和纵向都移动2位输出尺寸变小。如下如果stride 2,那么卷积核的走位顺序便是红色标注的1-4步输出的是2*2的矩阵。例题stride2 卷积操作示例代码实现-*-coding:utf-8-*-# 作者小土堆# 公众号土堆碎念importtorchimporttorch.nn.functionalasFinputtorch.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]])kerneltorch.tensor([[1,2,1],[0,1,0],[2,1,0]])inputtorch.reshape(input,(1,1,5,5))kerneltorch.reshape(kernel,(1,1,3,3))print(input.shape)print(kernel.shape)outputF.conv2d(input,kernel,stride1)print(output)output2F.conv2d(input,kernel,stride2)print(output2)执行如上代码我们控制台输出如下我们发现stride2的时候输出的尺寸被压缩了我们注意到输入图像和卷积核都转换为torch.tensor因为我们需要调整张量维度满足conv2d输入要求我们可以通过print查看张量形状是否符合要求注意事项输入张量需要4维增加batch和channel维度卷积核需要4维增加output和input channel维度下面我们介绍下如何通过reshape改变输入图像和卷积核的张量维度。reShape尺寸变换shape代码示例# -*- coding: utf-8 -*-# 作者小土堆# 公众号土堆碎念importtorchimporttorch.nn.functionalasFinputtorch.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]])kerneltorch.tensor([[1,2,1],[0,1,0],[2,1,0]])inputtorch.reshape(input,(1,1,5,5))kerneltorch.reshape(kernel,(1,1,3,3))print(input.shape)print(kernel.shape)如上代码执行后打印出来如下代码可以发现输入矩阵变成了1155的四维张量。卷积核变成了1133的四维张量。conv2d参数padding定义padding是在输入图像的四周进行像素填充的操作参数形式可以是一个数值或元组(padH, padW)分别指定高度和宽度方向的填充量默认值默认padding0即不进行任何填充填充值填充区域的像素值通常默认为0作用通过填充可以控制输出特征图的尺寸防止图像边缘信息丢失计算过程讲解如下图我们的输入图像由于padding是1所以周边多了一层然后我们的卷积核从放置在输入图像7*7的左上角开始计算输出值也是先横向移动横向移动到头后纵向移动到下一行最左边的格子以此类推去计算输出值。所以最后我们输出的尺寸比没有padding的时候大一些。padding1代码示例# -*- coding: utf-8 -*-# 作者小土堆# 公众号土堆碎念importtorchimporttorch.nn.functionalasFinputtorch.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]])kerneltorch.tensor([[1,2,1],[0,1,0],[2,1,0]])inputtorch.reshape(input,(1,1,5,5))kerneltorch.reshape(kernel,(1,1,3,3))print(input.shape)print(kernel.shape)output3F.conv2d(input,kernel,stride1,padding1)print(output3)执行如上代码控制台输出结果如下整体代码# -*- coding: utf-8 -*-# 作者小土堆# 公众号土堆碎念importtorchimporttorch.nn.functionalasFinputtorch.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]])kerneltorch.tensor([[1,2,1],[0,1,0],[2,1,0]])inputtorch.reshape(input,(1,1,5,5))kerneltorch.reshape(kernel,(1,1,3,3))print(input.shape)print(kernel.shape)outputF.conv2d(input,kernel,stride1)print(output)output2F.conv2d(input,kernel,stride2)print(output2)output3F.conv2d(input,kernel,stride1,padding1)print(output3)执行如上代码控制台输出如下小结
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MCP 协议是什么?AI 工具生态的 USB-C 接口 2026/10/2 12:46:52

MCP 协议是什么?AI 工具生态的 USB-C 接口

接 AI 工具最烦的是什么?每接一个新工具就写一遍胶水代码:这个平台一个格式、那个平台一个协议,工具写完了平台一换,全部重写。MCP(Model Context Protocol)就是冲着这个痛点来的——给 AI 应用和工具之间定…

阅读更多 →
Embedding 模型怎么选?选错它,RAG 天花板直接锁死 2026/10/2 12:46:52

Embedding 模型怎么选?选错它,RAG 天花板直接锁死

做 RAG 时大家的注意力都在生成模型上,但真正决定检索质量上限的,是 Embedding 模型——它负责把文档和问题变成可比的向量。选错了 Embedding,后面重排序调得再花,召回就是上不去。这篇聊选型的实操维度。 为什么它这么重要 RAG …

阅读更多 →
编码器-解码器架构实战:从RNN到Transformer的序列建模全解析 2026/10/2 12:46:46

编码器-解码器架构实战:从RNN到Transformer的序列建模全解析

编码器-解码器架构,这几个字在深度学习项目里出现的频率实在太高了。我最初接触它是在机器翻译任务上,后来做文本摘要、对话生成、语音识别特征序列建模,绕来绕去都绕不开这个框架。可以说,只要你做的是“输入一个序列、输出另一个…

阅读更多 →
LightC旧驱动清理完整指南:自动备份+恢复流程,绝不误删正在使用的驱动 2026/10/2 12:46:45

LightC旧驱动清理完整指南:自动备份+恢复流程,绝不误删正在使用的驱动

LightC旧驱动清理完整指南:自动备份恢复流程,绝不误删正在使用的驱动 【免费下载链接】light-c A free, minimalist, lightweight, and high-performance C-drive cleanup tool. 项目地址: https://gitcode.com/gh_mirrors/li/light-c LightC 是一…

阅读更多 →
热门的304软管接头定制工厂选购全攻略,鸿爵斯不踩坑 2026/10/2 12:46:44

热门的304软管接头定制工厂选购全攻略,鸿爵斯不踩坑

浙江鸿爵斯连接器有限公司,是一家专业制造各种规格电线电缆连接器的生产加工型企业。扎根温州电气产业沃土十余载,公司以配件虽小,责任重大为经营信条,主营不锈钢电缆防水接头、尼龙电缆防水接头、船用填料函、不锈钢防爆密封接头…

阅读更多 →
安徽天地盖礼盒定制供应商哪家技术强 河南百泰包装印刷实力参考 2026/10/2 12:46:44

安徽天地盖礼盒定制供应商哪家技术强 河南百泰包装印刷实力参考

安徽天地盖礼盒定制供应商哪家技术强?河南百泰包装印刷实力参考。这是不少安徽本地企业在采购礼盒包装时最常搜索的问题。天地盖礼盒作为中高端礼品包装的主流盒型,广泛用于美妆护肤、酒水茶叶、滋补保健品、牛羊肉礼盒、水果包装等场景,选对供应商直接…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉