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

nn.Conv2d(二)

 **前置知识:

1、nn.Conv2d和torch.nn.functional.conv2d的对比:

nn.Conv2d(能自主学习,更新调整卷积核)

  • 模块:可以看作是一个“卷积层”,用在神经网络里。
  • 定义一次,用多次:你只需设置好参数(比如输入通道、输出通道、卷积核大小),然后在每次前向传播时直接用它。
  • 自动管理:这个模块会自动保存和更新卷积的权重(参数),你只需关注模型的整体结构。

torch.nn.functional.conv2d(一次性使用,卷积核的参数需要人为给好给全)

  • 函数:可以想象成一个工具,用来执行一次性的卷积操作。
  • 灵活使用每次使用时都要提供所有需要的参数,比如输入数据、卷积核的权重和偏置。
  • 无状态:这个函数不会保存卷积的参数,所以你得自己管理这些。

2、self.conv_1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)

定义了一个卷积层,输入为 3 通道的图像,经过 3x3 的卷积核处理后,输出 6 通道的特征图

in_channels=3

  • 输入通道数:这里设置为 3,表示输入的图像有 3 个通道(例如 RGB 彩色图像)。每个通道对应图像中的一种颜色。

out_channels=6

  • 输出通道数:设置为 6,表示该卷积层会输出 6 个通道的特征图。这意味着卷积层会学习到 6 种不同的特征。

 kernel_size=3

  • 卷积核大小:设置为 3,表示卷积核的尺寸为 3x3 像素。卷积核在输入图像上滑动,进行局部特征的提取。

 stride=1

  • 步幅:设置为 1,表示卷积核每次滑动一个像素。步幅越小,输出特征图的尺寸越大。

 padding=0

  • 填充:设置为 0,表示不对输入图像进行填充。没有填充会使输出特征图的尺寸减小。

**代码:

加载数据集——>数据Loader处理——>创建新神经网络模型(继承nn.Module并重写方法)——>数据输入reshape成4维度张量——>使用该模型进行计算——>数据结果reshape成3通道——>tensorboard记录

import torch
import torchvision
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWritertest_set=torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)dataloader=DataLoader(test_set,batch_size=64)class Xigua(nn.Module):def __init__(self):super().__init__()self.conv_1=Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,input):output=self.conv_1(input)return outputxigua1=Xigua()
print(xigua1)
#Xigua((conv_1): Conv2d(3, 6, kernel_size=(3, 3), stride=(1, 1)))writer=SummaryWriter("logs1")
step=0
for data in dataloader:imgs,targets=dataoutput=xigua1(imgs)print(imgs.shape) #torch.Size([64, 3, 32, 32])print(output.shape) #torch.Size([64, 6, 30, 30])#需要reshape,使其变为3通道,才能使add_imgs生效,torch.Size([64, 6, 30, 30])————>torch.Size([***, 3, 30, 30])output=torch.reshape(output,(-1,3,30,30)) #-1是一个占位符,表示让pytorch自动计算该维度的大小writer.add_images("test_Conv2d",output,step,dataformats="NCHW")writer.add_images("start",imgs,step,dataformats="NCHW")step=step+1if step>=10:break
writer.close()# AssertionError: assert I.ndim == 4 and I.shape[1] == 3

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

相关文章:

  • 获取鸿蒙设备Udid遇到的问题
  • 【华为HCIP实战课程十】OSPF网络DR和BDR实战讲解,网络工程师
  • 视频怎么去除杂音保留人声?让人声更动听!视频噪音处理攻略
  • 洗衣店数字化转型:Spring Boot订单管理
  • Koa学习
  • linux线程 | 线程的概念
  • 2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)
  • WPF|依赖属性SetCurrentValue方法不会使绑定失效, SetValue方法会使绑定失效?是真的吗?
  • Windows搭建Java开发环境(Building a Java development environment on Windows)
  • 用FPGA做一个全画幅无反相机
  • 使用 Go 语言与 Redis 构建高效缓存与消息队列系统
  • springboot 整合spring ai实现 基于知识库的客服问答
  • 云原生(四十九) | WordPress源码部署
  • Spring Boot 集成 LiteFlow 实现业务流程编排
  • 在 Android Studio 中引入android.os.SystemProperties
  • 代码随想录算法训练营总结
  • 【uniapp】使用uniapp实现一个输入英文单词翻译组件
  • 6. 继承、重写、super、final
  • Redis 其他类型 渐进式遍历
  • 科研绘图系列:R语言绘制SCI文章图2
  • ARM知识点三和串口代码的编写流程
  • 【unity踩坑】打开vs2022没有文字联想/杂项文件
  • WebGoat JAVA反序列化漏洞源码分析
  • 大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
  • uni-app使用v-show编译成微信小程序的问题
  • 充电宝租赁管理系统网站毕业设计SpringBootSSM框架开发
  • 喜讯!迈威通信TSN产品通过“时间敏感网络(TSN)产业链名录计划”评测,各项指标名列前茅
  • 国产工具链GCKontrol-GCAir助力控制律开发快速验证
  • 嵌入式开发:STM32 硬件 CRC 使用
  • 基于STM32的智能家居语音控制系统:集成LD3320、ESP8266设计流程