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

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
在这里插入图片描述


http://www.mrgr.cn/news/12738.html

相关文章:

  • 项目中Redis常见的一些问题(缓存穿透,缓存雪崩,内存耗尽等)
  • 网安面试过程中的近源攻击
  • 华为OD机试 - 找单词 - 深度优先搜索DFS(Java 2024 E卷 100分)
  • 苹果M4芯片Mac全面曝光 或10月发布
  • 说说重载(Overloading)与重写(Overriding)的区别
  • APP、小程序对接聚合广告平台需要提供哪些资料?
  • java中用雪花算法生成64位的长整数
  • 微深节能 卸料小车远程智能控制系统 格雷母线定位系统
  • 每日刷力扣SQL(九)
  • Qt详解QParallelAnimationGroup并行动画组
  • 后端面试真题整理
  • Day24 第11站 出发 c++!
  • 如何构建社区康养管理系统?实现老年人服务管理全攻略【Java SpringBoot】
  • 在Excel中使用VLOOKUP函数时避免显示NA和0
  • Linux调整SSH登录访问方式
  • 13.JS学习篇-ES6 React 项目模板
  • 论文速览【LLM】 —— 【ORLM】Training Large Language Models for Optimization Modeling
  • Html5—表单
  • 第2章-07-客户端IP与UserAgent
  • LUOGU P2048 [NOI2010] 超级钢琴(贪心+堆)