P17.神经网络——卷积层

news/2025/11/5 10:45:11/文章来源:https://www.cnblogs.com/Samar-blog/p/19192835

P17.神经网络——卷积层

17.1官网:Docs-PyTorch-torch.nn-Convolution Layers

1.nn.Conv2d:图像主要是二维矩阵

点击查看代码
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)[source]
in_channels:输入通道数,out_channels:输出通道数,kernel_size:卷积核大小,stride:步长,padding:填充,dilation:卷积核的一个对应位(距离),bias偏置(常设置为True)

比较常用的就是前面五个参数;

2.卷积的数学公式:

点击查看代码
Applies a 2D convolution over an input signal composed of several input planes.In the simplest case, the output value of the layer with input size 
(N,Cin,H,W) and output (N,Cout,Hout,Wout) can be precisely described as:
#公式如下图所示:  
where ⋆ is the valid 2D cross-correlation operator, N is a batch size, C denotes a number of channels, H is a height of input planes in pixels, and W is width in pixels.

1

3.Conv2d的参数

点击查看代码
#Conv2d的Parameters
in_channels (int) – Number of channels in the input image
out_channels (int) – Number of channels produced by the convolution
kernel_size (int or tuple) – Size of the convolving kernel
stride (int or tuple, optional) – Stride of the convolution. Default: 1
padding (int, tuple or str, optional) – Padding added to all four sides of the input. Default: 0
dilation (int or tuple, optional) – Spacing between kernel elements. Default: 1
groups (int, optional) – Number of blocked connections from input channels to output channels. Default: 1
bias (bool, optional) – If True, adds a learnable bias to the output. Default: True
padding_mode (str, optional) – 'zeros', 'reflect', 'replicate' or 'circular'. Default: 'zeros'

dilation controls the spacing between the kernel points; also known as the à trous algorithm. It is harder to describe, but this link has a nice visualization of what dilation does.

点击link后:

2

5.in_channel和out_channel

设置out_channel=2

3

17.2在pycharm执行卷积层操作

1.输入代码,创建dyl神经网络

点击查看代码
import torch
import torchvision
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch import nndataset = torchvision.datasets.CIFAR10(root = "./dataset",train = False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)#1.定义神经网络的模板
class Dyl(nn.Module):#先完成父类的初始化def __init__(self) -> None:super(Dyl,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)#CIFAR10是彩色图像,所以输入是三层即in_channels=3,同时,设置out_channels为6层def forward(self,x):x = self.conv1(x)return x
#2.创建dyl神经网络
dyl = Dyl()
print(dyl)

2.输出结果如下

点击查看代码
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P17_conv2d.py
Files already downloaded and verified
Dyl((conv1): Conv2d(3, 6, kernel_size=(3, 3), stride=(1, 1))
)进程已结束,退出代码0
输出结果:神经网络名字叫Dyl,它其中有个卷积层叫conv1,卷积层用参数定义是kernel为3*3矩阵

3.现在想把dataloaderl里面的每张图像放到神经网络

点击查看代码
import torch
import torchvision
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch import nndataset = torchvision.datasets.CIFAR10(root = "./dataset",train = False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)#1.定义神经网络的模板
class Dyl(nn.Module):#先完成父类的初始化def __init__(self) -> None:super(Dyl,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)#CIFAR10是彩色图像,所以输入是三层即in_channels=3,同时,设置out_channels为6层def forward(self,x):x = self.conv1(x)return x
#2.创建dyl神经网络
dyl = Dyl()
# print(dyl)#3.现在想把dataloaderl里面的每张图像放到神经网络
for data in dataloader:imgs,targets = dataoutput = dyl(imgs)print(imgs.shape)print(output.shape)

4.输出结果如下

点击查看代码
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P17_conv2d.py
Files already downloaded and verified
torch.Size([64, 3, 32, 32])
torch.Size([64, 6, 30, 30])
......
torch.Size([64, 3, 32, 32])
torch.Size([64, 6, 30, 30])
torch.Size([16, 3, 32, 32])
torch.Size([16, 6, 30, 30])进程已结束,退出代码0

卷积层会正常对输入图像进行计算,输出的output.shape会根据卷积参数(输入通道、输出通道、卷积核大小等)发生相应变化。

可以看到,卷积之前的batch_size是64,in_channels是3,图像是32×32;经过卷积之后,channels变成6,图像变成了30×30

5.在tensorboard中更直观展示

(1)代码如下:
点击查看代码
writer = SummaryWriter("conv2d")
step = 0
for data in dataloader:imgs,targets = dataoutput = dyl(imgs)print(imgs.shape)print(output.shape)#torch.Size([64, 3, 32, 32])writer.add_images("input",imgs,step)#torch.Size([64, 6, 30, 30])writer.add_images("output",output,step)step = step + 1
writer.close()
(2)报错了:
点击查看代码
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P17_conv2d.py
Files already downloaded and verified
torch.Size([64, 3, 32, 32])
torch.Size([64, 6, 30, 30])
Traceback (most recent call last):File "D:/DeepLearning/Learn_torch/P17_conv2d.py", line 43, in <module>writer.add_images("output",output,step)#这个报错,是因为:File "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\writer.py", line 662, in add_imagesimage(tag, img_tensor, dataformats=dataformats), global_step, walltimeFile "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\summary.py", line 436, in imagetensor = convert_to_HWC(tensor, dataformats)File "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\_utils.py", line 113, in convert_to_HWCtensor_CHW = make_grid(tensor_NCHW)File "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\tensorboard\_utils.py", line 74, in make_gridassert I.ndim == 4 and I.shape[1] == 3
AssertionError进程已结束,退出代码1
(3)【deepseek分析】

你这里将 add_image 改为了 add_images(注意多了一个 s),这个改动是合理的,因为 add_images 专门用于显示批量图像(4 维张量 [B, C, H, W] 或 [B, H, W, C])。但仍然可能存在一个问题:输出 output 的通道数为 6,而 add_images 默认期望图像通道数为 1(灰度)或 3(RGB),6 通道的张量无法直接作为图像显示。(没错,我最开始输入的是add_image()而非add_images())

具体分析:
输入图像(imgs):

形状为 [64, 3, 32, 32]([B, C, H, W]),通道数为 3(符合 RGB 图像格式)。
add_images 会自动识别批量图像格式,无需额外指定 dataformats(默认支持 [B, C, H, W]),因此输入图像可以正常显示。

输出特征图(output):

形状为 [64, 6, 30, 30],通道数为 6(卷积层输出的特征通道数)。
图像显示通常只支持 1 或 3 通道,6 通道张量会导致 add_images 报错(提示通道数不支持)。

6.对输出的 6 通道特征图进行处理

保留前 3 个通道(或通过其他方式如reshape变为 3 通道),使其符合图像显示要求
点击查看代码
import torch
import torchvision
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch import nn
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10(root = "./dataset",train = False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)#1.定义神经网络的模板
class Dyl(nn.Module):#先完成父类的初始化def __init__(self) -> None:super(Dyl,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)#CIFAR10是彩色图像,所以输入是三层即in_channels=3,同时,设置out_channels为6层def forward(self,x):x = self.conv1(x)return x
#2.创建dyl神经网络
dyl = Dyl()
# print(dyl)#3.现在想把dataloaderl里面的每张图像放到神经网络
# for data in dataloader:
#     imgs,targets = data
#     output = dyl(imgs)
#     print(imgs.shape)
#     print(output.shape)#4.在tensorboard中更直观展示
writer = SummaryWriter("conv2d")
step = 0
for data in dataloader:imgs,targets = dataoutput = dyl(imgs)print(imgs.shape)print(output.shape)#torch.Size([64, 3, 32, 32])writer.add_images("input",imgs,step)#torch.Size([64, 6, 30, 30])#writer.add_images("output",output,step)这个报错,是因为:
#output的通道数为6,而add_images默认期望图像通道数为1(灰度)或3(RGB),6通道的张量无法直接作为图像显示。#(1)对output取前3个通道,形状变为[64, 3, 30, 30]#writer.add_images("output",output[:, 0:3, :, :],step)#(2)对output进行尺寸变化,想把[64,3,30,30]变成[xxx,3,30,30]#第一个数xxx不知道是多少的时候写-1,会根据我后面的值进行计算output = torch.reshape(output,(-1,3,30,30))writer.add_images("output", output, step)step = step + 1
writer.close()

7.TensorBoard 会正常显示输入的批量图像和卷积后的特征图(前 3 通道),在终端输入以下代码:

tensorboard --logdir=conv2d

8.成果如下:

输入和经过卷积之后得到的输出:

P17_tensorboard

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/956560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔Linux部署 一个基于uni-app 系统指南

这是一个基于 uni-app 开发的系统,支持 H5、小程序、APP 等多端。在宝塔 Linux 上主要部署 H5 版本。 部署步骤 一、环境准备 1.1 安装必要软件(在宝塔面板中) Node.js(推荐版本 14.x 或更高) 宝塔面板 → 软件商…

MySQL Binlog 疯涨问题终极解决方案:从配置到代码的全维度优化

MySQL Binlog 疯涨问题终极解决方案:从配置到代码的全维度优化在高并发业务场景中,MySQL Binlog 疯涨是运维高频痛点——可能几小时内就吞噬数十 GB 磁盘空间,甚至导致服务宕机。Binlog 疯涨的核心是“生成量远超清…

火山引擎发布Data Agent新能力,推动用户洞察进入“智能3.0时代”​

近日,火山引擎AI创新巡展武汉站“Data+AI专场闭门会”上,火山引擎正式发布Data Agent新能力:用户研究Agent。该产品基于大模型技术与字节跳动多年“数据驱动”实践,面向企业用户洞察与决策辅助,致力于更高效、客观…

2025年知名的减速机用户口碑最好的厂家榜

2025年知名的减速机用户口碑最好的厂家榜 减速机作为工业传动领域的核心部件,广泛应用于冶金、矿山、化工、建材、电力等行业。随着智能制造和自动化技术的快速发展,减速机的性能、可靠性和售后服务成为用户选择的关…

2025年质量好的螺旋压榨机厂家最新推荐权威榜

2025年质量好的螺旋压榨机厂家最新推荐权威榜 开篇介绍 螺旋压榨机作为现代工业中不可或缺的固液分离设备,广泛应用于造纸、食品加工、生物质能源、化工等多个领域。其高效、连续、节能的特点使其成为众多企业的首选…

IDEA中使用git查看show history之后很卡

问题 idea版本 IntelliJ IDEA 2023.3.2 (Ultimate Edition) 查看idea的历史提交记录(history log)就直接卡死 查询资料尝试了第一种方式没什么作用,查看第二种 services.msc真的在服务列表看到了Microsoft PC Manag…

2025 年板材厂家最新推荐排行榜:聚焦 ENF 级环保与高端定制,精选优质品牌深度解析

引言 当前家居建材市场中,板材作为全屋定制、家具制造及商业空间装饰的核心材料,需求持续增长,但市场乱象却让消费者与采购商陷入困境。众多品牌混杂,部分产品环保不达标、物理性能差,且信息不对称导致选购难度大…

借助 TX Text Control:在 .NET C# 中验证 PDF/UA 文档

创建易于访问且符合规范的 PDF 文档正成为各行各业日益重要的需求。在本篇bow中,我们将探讨如何使用 Text Control 的 .NET 库验证 PDF/UA 文档,轻松确保生成的 PDF 符合无障碍标准。创建易于访问且符合规范的 PDF 文…

2025年比较好的实木公寓床厂家推荐及选购指南

2025年比较好的实木公寓床厂家推荐及选购指南 随着家居市场对环保、耐用与空间利用率需求的提升,实木公寓床凭借其天然质感与稳固性成为学生公寓、青年公寓及小户型家庭的首选。2025年,以下五家企业在产品研发、工艺…

2025年厦门影视制作公司TOP5推荐:厦门蓝火焰影视全解析

在短视频与品牌影视内容爆发的时代,优质影视制作服务是企业传递品牌价值、触达目标受众的核心载体。面对市场上良莠不齐的服务商,如何找到场景搭建专业、项目执行高效、作品口碑过硬的合作伙伴?以下为你盘点2025年厦…

2025年比较好的提升机厂家最新用户好评榜

2025年比较好的提升机厂家最新用户好评榜 在工业自动化与智能物流快速发展的背景下,提升机作为物料输送的核心设备,其性能、稳定性和智能化水平直接影响生产效率。2025年,用户对提升机厂家的技术实力、售后服务及性…

2025 年板材源头厂家最新推荐排行榜:聚焦 ENF 级环保板材,精选家实力企业助力装修选材

引言 当前建材市场中,板材品类繁杂,环保不达标、质量参差不齐、性能难匹配需求等问题频发,让消费者和装修从业者在选材时倍感困扰。传统板材的苯系物释放、易燃、施工复杂等痛点,不仅影响居住安全与健康,还可能增…

PPT处理控件Aspose.Slides教程:使用Java将PowerPoint笔记导出为PDF

Aspose.Slides for Java使用户能够轻松地操作幻灯片、添加注释和转换文件。其易用性和集成能力提高了工作效率,使开发人员能够专注于更关键的任务。在 Java 中将PowerPoint备注导出为PDF对于需要共享带有注释的演示文…

2025年口碑好的重型三节轨厂家最新TOP排行榜

2025年口碑好的重型三节轨厂家最新TOP排行榜 随着家居定制行业的快速发展,重型三节轨作为橱柜、衣柜等家具的核心配件,其质量与性能直接影响产品的使用寿命和用户体验。2025年,市场上涌现出众多优秀的重型三节轨生…

2025年知名的工业净化铝材厂家最新热销排行

2025年知名的工业净化铝材厂家最新热销排行 随着工业4.0和绿色制造的快速发展,工业净化铝材因其轻量化、耐腐蚀、高强度等特性,在半导体、医疗、新能源等领域需求激增。以下是2025年市场表现优异、口碑突出的5家工业…

2025年学习点茶机构权威推荐榜单:点茶课堂/点茶教学/点茶培训源头机构精选

在传统文化复兴与消费升级的双重驱动下,点茶作为宋代茶文化的重要代表,近年来学习需求显著增长。据行业数据统计,2025年茶文化产业规模预计突破5000亿元,年复合增长率保持在12.5%左右,其中点茶培训机构的数量较20…

存储成本降半、处理效率倍增:火山引擎多模态数据湖如何支撑Agent规模化落地

2025年,智能体(AI Agent)已成为人工智能领域最具前瞻性的技术方向与产业焦点。各行各业对企业级 Agent 的研发与应用持续深入,其核心目标在于显著提升业务运营效能与决策智能化水平。在此背景下,火山引擎数智平台…

2025年靠谱的圆盘耙TOP实力厂家推荐榜

2025年靠谱的圆盘耙TOP实力厂家推荐榜 在农业机械化快速发展的今天,圆盘耙作为土壤耕作的重要工具,其性能与质量直接影响作业效率和作物产量。选择一家技术成熟、口碑可靠的圆盘耙生产厂家至关重要。本文基于产品性…

北京石材结晶服务公司白皮书,石材结晶服务选择哪家好

在现代商业空间与住宅的维护中,石材作为地面、墙面及装饰面的核心材料,其光泽度与耐用性直接影响整体空间的品质感。而石材结晶作为恢复石材光泽、延长使用寿命的关键工艺,正成为越来越多用户的刚需——它能在石材表…

2025年口碑好的成都中空板TOP实力厂家推荐榜

2025年口碑好的成都中空板TOP实力厂家推荐榜 在当今快速发展的包装行业中,中空板因其轻便、耐用、环保等特性,广泛应用于光伏、新能源、电子包装等领域。成都是中国西南地区的重要工业基地,拥有众多专业的中空板生…