欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > AI学习记录 - 怎么理解 torch 的 nn.Conv2d

AI学习记录 - 怎么理解 torch 的 nn.Conv2d

2025/11/6 4:11:09 来源:https://blog.csdn.net/weixin_43954090/article/details/141489857  浏览:    关键词:AI学习记录 - 怎么理解 torch 的 nn.Conv2d

有用就点个赞

怎么理解 nn.Conv2d 参数

conv_layer = nn.Conv2d(in_channels=3, out_channels= 64, kernel_size=3, stride=1, padding=0, bias=False)

in_channels

in_channels 可以设置成1,2,3,4等等都可以,一般来说做图像识别的时候,先使用图片解析工具把一个彩色图片变成三个通道的图片,所以一张图片对应有三张图,in_channels 一般来说等于3,当然你可以发明一个四通道图片,in_channels就等于4。又或者你直接使用原图,那么in_channels 的值就相当于有多少张不同的图片,怎么理解都可以。

在这里插入图片描述

先看参数对应什么,一般说卷积核都是二维的,但是这里指的是三维卷积核,一共有64个三维卷积核,如果变成二维的话,就有192个二维卷积核,可以理解为将三个通道的图片通过一个三维卷积核压缩成一个特征图,64个三维卷积核那就压缩成64个特征图

在这里插入图片描述

如果再不懂,举个简单的例子,input_tensor 的尺寸是 3*3 ,真实情况下肯定是100 * 100以上啦,图片一般都很大,这里不会滑动而已

import torch
import torch.nn as nn# 定义输入张量,形状为 (batch_size, in_channels, height, width)
input_tensor = torch.tensor([[[[1, 1, 1],[1, 1, 1],[1, 1, 1]],[[0, 1, 0],[0, 1, 0],[0, 1, 0]],[[1, 0, 1],[1, 0, 1],[1, 0, 1]]]], dtype=torch.float32)# 定义一个卷积层,输入通道数为3,输出通道数为6,卷积核大小为3x3
conv_layer = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=3, bias=False)
print(input_tensor.size())
# 修改第一个通道的权重,但其实这里有6个三维卷积核
with torch.no_grad():conv_layer.weight[0] = torch.nn.Parameter(torch.tensor([[[1, 1, 1],[1, 1, 1],[1, 1, 1]],[[1, 1, 1],[1, 1, 1],[1, 1, 1]],[[1, 1, 1],[1, 1, 1],[1, 1, 1]]], dtype=torch.float32))
print(conv_layer.weight.size())
# 进行卷积操作
output = conv_layer(input_tensor)# 输出结果
print("输入张量:")
print(input_tensor)
print("\n卷积核权重(仅第一个输出通道显示):")
print(conv_layer.weight[0])
print("\n输出结果(仅显示第一个输出通道的卷积结果):")
print(output[0][0])  # 只显示第一个输出通道的结果

再不懂,画个线
在这里插入图片描述

通道图和卷积核的计算方式,简单的例子

在这里插入图片描述
计算:
在这里插入图片描述

卷积核的数量,由 out_channels 决定,out_channels是多少,就生成多少个卷积核。

padding 参数解析

padding = 1,周围填充0
在这里插入图片描述
padding = 2,周围填充0
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词