深度学习入门-09

news2024/11/15 7:41:47

基于小土堆学习

1、卷积层

卷积操作涉及到一个称为“卷积核”或“滤波器”的小窗口,在输入数据上滑动,并对每个位置上的数据进行加权求和,可能还会加上一个偏置项。这个加权求和的结果就构成了输出特征图(feature map)中的一个元素。卷积核的权重在训练过程中通过反向传播算法学习得到。
卷积层的特点

  • 局部连接:卷积层中的每个神经元只与输入数据的一个局部区域相连,这使得网络能够关注到数据的局部特征。
  • 权重共享:在卷积层中,同一个卷积核的权重在滑动过程中是共享的,这意味着无论卷积核滑动到输入数据的哪个位置,它都使用相同的权重。这大大减少了模型的参数数量。
  • 多卷积核:一个卷积层可以有多个不同的卷积核,每个卷积核都可以提取输入数据的一种特定特征。因此,卷积层的输出通常是一个深度增加的特征图,其中每个深度切片都是由一个不同的卷积核生成的。
  • 步长和填充:卷积操作可以通过步长(stride)和填充(padding)来控制输出特征图的尺寸。步长决定了卷积核滑动的距离,而填充则决定了在输入数据边缘添加多少零值。

在PyTorch中,卷积层是用来处理图像、视频、文本或语音数据中的空间层次结构的重要工具。以下是您提到的各种卷积层的简要概述:

  • nn.Conv1d:应用于一维输入信号(例如时间序列或文本数据)的卷积层。它适用于多个输入平面组成的输入信号。

  • nn.Conv2d:应用于二维输入信号(如图像)的卷积层。它同样适用于多个输入平面组成的输入信号。

  • nn.Conv3d:应用于三维输入信号(如视频或三维医学图像)的卷积层。它适用于多个输入平面组成的输入信号。

  • nn.ConvTranspose1d:应用于一维输入信号的转置卷积层。转置卷积常用于上采样或增加输入数据的维度。

  • nn.ConvTranspose2d:应用于二维输入信号的转置卷积层。同样用于上采样或增加输入数据的维度。

  • nn.ConvTranspose3d:应用于三维输入信号的转置卷积层。也用于上采样或增加输入数据的维度。

  • nn.LazyConv1d, nn.LazyConv2d, nn.LazyConv3d:这些是带有延迟初始化in_channels参数的卷积层版本。这意味着在首次前向传递之前,不需要指定输入通道的数量。

  • nn.LazyConvTranspose1d, nn.LazyConvTranspose2d, nn.LazyConvTranspose3d:这些是带有延迟初始化in_channels参数的转置卷积层版本。

  • nn.Unfold:从批处理的输入张量中提取滑动局部块。这可以用于实现自定义的卷积操作。

  • nn.Fold:将滑动局部块数组组合成一个大的包含张量。这是nn.Unfold操作的逆操作,也常用于自定义卷积操作。

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)

torch.nn.Conv2d 是 PyTorch 中用于应用二维卷积层的一个类。这个类非常适用于处理图像数据,因为它可以在图像的宽度和高度上滑动窗口(或称为“核”),从而提取特征。下面是 torch.nn.Conv2d 类参数的详细解释:

  • in_channels (int): 输入信号的通道数。例如,对于RGB图像,in_channels 就是3。

  • out_channels (int): 卷积产生的通道数。这个参数决定了卷积层输出的深度。
    在这里插入图片描述
    如果out_channels=2,就是2个卷积核,就是又会得出一个数据
    在这里插入图片描述
    在这里插入图片描述

  • kernel_size (int 或 tuple): 卷积核的大小。可以是一个整数,表示卷积核的高度和宽度都是这个值;也可以是一个元组 (height, width),分别指定卷积核的高度和宽度。定义了卷积核的大小,只需要设置尺寸,其中的数字不需要我们设置

  • stride (int 或 tuple, 可选): 卷积时的步长。默认值为1。可以是一个整数,表示在高度和宽度上的步长都是这个值;也可以是一个元组 (stride_height, stride_width),分别指定在高度和宽度上的步长。

  • padding (int 或 tuple, 可选): 输入边缘的填充大小。默认值为0。可以是一个整数,表示在高度和宽度上的填充都是这个值;也可以是一个元组 (padding_height, padding_width),分别指定在高度和宽度上的填充。

  • dilation (int 或 tuple, 可选): 卷积核元素之间的间距。默认值为1。可以是一个整数,表示在高度和宽度上的间距都是这个值;也可以是一个元组 (dilation_height, dilation_width),分别指定在高度和宽度上的间距。

  • groups (int, 可选): 控制输入和输出之间的连接的组数。默认值为1。当使用多个组时,可以实现类似深度可分离卷积的操作,这有助于减少计算量和参数数量。

  • bias (bool, 可选): 是否添加偏置项。默认值为True。

  • padding_mode (string, 可选): 填充的模式,可以是 - ‘zeros’、‘reflect’、‘replicate’ 或 ‘circular’。默认值为 ‘zeros’,表示使用零填充。

  • device (torch.device, 可选): 指定张量所在的设备(CPU或GPU)。

  • dtype (torch.dtype, 可选): 指定张量的数据类型。
    这个类在创建时会初始化卷积核和偏置(如果 bias=True),然后在前向传播时应用卷积操作。输出的形状由输入形状、卷积核大小、步长、填充和间距共同决定。
    不同卷积的特征

定义了一个简单的卷积神经网络模型Test,它包含一个卷积层。然后,它加载CIFAR10数据集,并在测试集上运行模型,打印出模型输出的形状。注意,这里我们只传递图像数据imgs给模型,而不是整个data(它包含图像和标签)。

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader

dataset = torchvision.datasets.CIFAR10("./CIFAR", train=False, transform=
torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64)


class Test(nn.Module):
    def __init__(self):
        super(Test, self).__init__()
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)

    def forward(self, x):
        x = self.conv1(x)
        return x


test = Test()

for data in dataloader:
    imgs, target = data
    output = test(imgs)
    print(output.shape)

部分输出结果为:

C:\Anaconda3\envs\pytorch_test\python.exe H:\Python\Test\nn_cov2d.py 
Files already downloaded and verified
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])
torch.Size([64, 6, 30, 30])

采用tensorboard对图像进行显示

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("./CIFAR", train=False, transform=
torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64)

write = SummaryWriter("logs")

class Test(nn.Module):
    def __init__(self):
        super(Test, self).__init__()
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)

    def forward(self, x):
        x = self.conv1(x)
        return x


test = Test()
step = 0

for data in dataloader:
    imgs, target = data
    output = test(imgs)
    print("output.shape",output.shape)
    print("imgs.shape",imgs.shape)
    #imgs.shape torch.Size([64, 3, 32, 32])
    write.add_images("input",imgs,step)
    # output.shape:torch.Size([64, 6, 30, 30])---需要转换为([64, 3, 30, 30])
    #6个channel,导致tensorBoard无法识别解析
    output= torch.reshape(output,(-1,3,30,30))
    #第一个值不知道是多少的时候直接负一,他会自动计算
    write.add_images("output", output, step)
    step = step+1
write.close()

部分运行结果

C:\Anaconda3\envs\pytorch_test\python.exe H:\Python\Test\nn_cov2d.py 
Files already downloaded and verified
output.shape torch.Size([64, 6, 30, 30])
imgs.shape torch.Size([64, 3, 32, 32])
output.shape torch.Size([64, 6, 30, 30])
imgs.shape torch.Size([64, 3, 32, 32])
output.shape torch.Size([64, 6, 30, 30])

图像结果如下:
在这里插入图片描述

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

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

相关文章

SS-31;Elamipretide;伊拉米肽;线粒体靶向抗氧化剂SS-31肽;CAS:736992-21-5

【SS-31 简介】 SS-31肽是一种心磷脂过氧化物酶抑制剂和线粒体靶向肽。 它可以改善左心室和线粒体功能。SS-31肽可减轻 人小梁网状细胞中的线粒体功能障碍和氧化损伤。它可以防止iHTM和GTM(3)细胞受到H2O2诱导的持续氧化应激。慢性心力衰竭和线粒体肌病的I期临床试验正在进行中…

EPLAN中绘制多线原理图以及插入符号元件

EPLAN中绘制多线原理图以及插入符号元件 如下图所示,新建并打开多线原理图,点击菜单栏中的插入—电位连接点, 插入所需的电位连接点; 如下图所示,点击项目数据—符号,这样可以打开符号选择的导航器&#…

07 - procfs

---- 整理自 王利涛老师 课程 实验环境:宅学部落 www.zhaixue.cc 文章目录 1. procfs 快速入门2. procfs 文件创建的回调机制3. 在 proc 目录下创建子目录4. 通过 proc 接口修改内核变量5. 通过 proc 接口访问数组6. 序列文件:seq_file 编程接口7. seq_f…

Hbase离线迁移

假设是hbase集群,那么数据存储在hdfs上。 1.关闭2个hbase 2.使用distcp 将hdfs上的hbase数据迁移到另一个【相同路径】的hdfs上。 不知道目录的话,可以find / -name hbase-site.xml找一下。 hadoop distcp -Dmapreduce.job.hdfs-servers.token-renew…

XtQuant接口概述,想用miniQMT做量化哪家券商支持?

XtQuant.XtData 行情模块 xtdata是xtquant库中提供行情相关数据的模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,作为python库的形式可以被灵活添加到各种策略脚本中。 主要提供行情数据(历史和实时的K线和分笔)、…

无人机喊话器详解!!!

无人机喊话器,也被称为无人机扬声器,是一种安装在无人机上,用于通过空中向地面人员传递声音的设备。 一、功能特点 远程传递声音:无人机喊话器能够在较远的距离内清晰地传递声音,有效广播范围通常可达数百米甚至更远…

Linux下单网卡配置多个路由ip方法

Linux下配置网卡ip别名何谓ip别名 用windows的话说,就是为一个网卡配置多个ip。 什么场合增加ip别名能派上用场? 布网需要、多ip访问测试、特定软件对多ip的需要 下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。 一、首先为服务器…

会员通知短信怎么利用NodeJS发送短信

会员通知群发短信以其即时高效、高打开率、个性化定制、成本效益高、跨平台兼容以及法律合规等优势,在现代会员管理和营销策略中占据了重要地位。对于希望提升会员沟通效率、增强用户粘性和促进业务增长的企业而言,合理利用群发短信工具无疑是一个明智的…

left join 使用 sum()

一,表结构 表一,test_group 分组表 表二,test_user 用户表 test_group 和 test_user 是一对多的关系 二,sql 统计一班的总得分和所有用户的总年龄 SELECT SUM(a.score),SUM(b.age),a.groupname from test_group a LEFT JOIN…

Keepalived高可用配置服务器集群

前言 上章完成了通过nginx对服务器配置了负载均衡,保证了一个服务器宕机另一个服务器顶上,但是有一个问题出现了,如果nginx宕机了怎么办,这章会对这个问题进行讲解,配置集群来保证nginx宕机下一个顶上来,服务器一直能提供服务当一台服务器宕机的时候把从服务器切换为主,提供虚…

【机器人学】7-3.六自由度机器人自干涉检测-圆柱体的旋转变换【附MATLAB代码】

前言 上一章确定了机械臂等效的圆柱体的上下圆心坐标,这篇文章将解决算法三个核心中的第二个核心: 一 根据机械臂的几何数据以及DH参数,确定机械臂等效的圆柱体的上下圆心坐标。 二 将一个圆柱体旋转到与坐标Z轴对齐,另一个圆柱…

华为机考笔试没有结果?

点击上方"互联网求职达人",选择"设为置顶or星标" 第一时间获取最实用的求职以及备考信息 华为机考笔试范围是什么?​https://mp.weixin.qq.com/s?__bizMzU2NjE0NjMxNg&mid2247483962&idx1&sn69b0b152dd8e7ebe9ddb356b…

livekit 环境搭建

目录 livekit介绍 搭建开发环境 goland编译 运行server 启动server 通过lk命令加入房间 通过web打开本地摄像头 通过goland调试livekit livekit介绍 livekit是一个开源的webrtc服务器,性能十分强大,房间管理、redis、信令业务、流媒体sfu都支…

PMP备考经验 | 如何做到一次考过3A?

一,直播课的学习 面对大量场景阅读题,且刷题也基本没原题的PMP考试,从报名的时候就知道临考刷题大法肯定是行不通的,也想把这个证好好学下去真的成为项目管理专家。 于是第一个周末的直播课两天跟随听课,认真做笔记&am…

数据结构——链表学习

数据结构初步了解 链表是数据结构的一部分,所以我想先理清数据结构的要点: 它们说:程序算法数据结构,在计算机中,把所有可以输入到计算机中能被计算机进行处理的符号的总称叫做数据。 数据结构包括两部分&#xff0…

美畅物联丨物联网平台的标准化之路:物模型设计的创新及应用

随着物联网(IoT)技术以前所未有的迅猛之势蓬勃发展,海量的物联网终端与应用纷纷接入,这不可避免地引发了数据与应用层面的异构化难题,进而形成了复杂且多变的碎片化问题。物联网感知数据因其具备多源异构的显著特性&am…

基于vue框架的病房管理系统设计与实现uilp1(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:患者,医护人员,患者病历,医院病房,住院信息,科室,病房预约,住院费用 开题报告内容 基于Vue框架的病房管理系统设计与实现开题报告 一、引言 随着医疗信息化建设的不断深入,病房管理作为医院日常运营的核心环节之一&#x…

VMware Workstation虚拟机 + 许可证密钥

VMware Workstation虚拟机 许可证密钥 VMware Workstation是什么?VMware简介VMware 安装VMware系统要求VMware 版本下载地址许可证序列码看这里 !!!!! VMware Workstation是什么? VMware简介 …

揭开容器的面纱:容器技术全景概述

随着云计算的快速发展,容器技术已经成为IT行业的重要组成部分。Docker作为一种领先的容器化技术,为应用程序的开发、部署和运行带来了革命性的变化。本篇文章将详细介绍容器技术的概念、发展历程及其在现代计算中的应用。通过对Docker的深入了解&#xf…

友思特方案 | 基于三维点云实现PCB装配螺丝视觉检测

导读 三维点云是完成精密化 PCB 检测的最新视觉技术。友思特 Saccde Vision 视觉扫描系统,采用先进的三维成像技术和算法输出直观点云图,进一步确保了PCB生产的可靠性与稳定性能。 在电子产品的生产过程中,PCB(Printed Circuit B…