深度学习(八)——神经网络:卷积层

news2024/11/26 3:32:18

一、卷积层Convolution Layers函数简介

官网网址:torch.nn.functional — PyTorch 2.0 documentation

由于是图像处理,所以主要介绍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)

  • 参数解释可见上一篇笔记

  • in_channels(int): 输入图像的通道数,彩色图像一般为3(RGB三通道)

  • out_channel(int): 通过卷积后,产生的输出的通道数

  • kernel_size(int or tuple): 一个数或者元组,定义卷积大小。如_kernel_size=3_,即定义了一个大小为_3×3_的卷积核;kernel_size=(1,2),即定义了一个大小为_1×2_的卷积核。

  • stride(int or tuple,可选): 默认为1,卷积核横向、纵向的步幅大小

  • padding(int or tuple,可选): 默认为0,对图像边缘进行填充的范围

  • padding_mode(string,可选): 默认为zeros,对图像周围进行padding时,采取什么样的填充方式。可选参数有:'zeros', 'reflect', 'replicate' or 'circular'

  • dilation(int or tuple,可选): 默认为1,定义在卷积过程中,它的核之间的距离。这个我们称之为空洞卷积,但不常用。

  • groups(int or tuple,可选): 默认为1。分组卷积,一般都设置为1,很少有改动

  • bias(bool,可选): 默认为True。偏置,常年设置为True。代表卷积后的结果是否加减一个常数。

关于卷积操作,官方文档的解释如下:

In the simplest case, the output value of the layer with input size \((N,C_{in}​,H,W) \)and output\( (N,C_{out}​,H_{out}​,W_{out}​)\) can be precisely described as:

\[out(N_i​,Cou_{tj}​​)=bias(C_{out_j}​​)+∑_{k=0}^{C_{in}​−1}​weight(C_{out_j}​​,k)⋆input(N_i​,k) \]

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)参数kernel_size的说明

  • kernel_size主要是用来设置卷积核大小尺寸的,给定模型一个kernel_size,模型就可以据此生成相应尺寸的卷积核。

  • 卷积核中的参数从图像数据分布中采样计算得到的。

  • 卷积核中的参数会通过训练不断进行调整。

(2)参数out_channel的说明

  • 如果输入图像in_channel=1,并且只有一个卷积核,那么对于卷积后产生的输出,其out_channel也为1
  • 如果输入图像in_channel=2,此时有两个卷积核,那么在卷积后将会输出两个矩阵,把这两个矩阵当作一个输出,此时out_channel=2

二、实例讲解

使用CIFAR中的图像数据,对Conv2d进行讲解

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

#导入图像数据
dataset=torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
#打包数据
dataloder=DataLoader(dataset,batch_size=64)

#搭建神经网络
class Demo(nn.Module):
    def __init__(self):
        super().__init__()

        #导入图像为彩色,所以in_chennel=3;输出我们可以试试out_chennel=6;kernel_size=3(进行3×3的卷积),stride和padding均使用默认值1和0
        self.conv1=Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)    #self.conv1为一个卷积层,Conv2d是建立卷积层的函数

    def forward(self,x):
        x = self.conv1(x)  #将输入的x放进卷积层self.conv1中,然后返回得到的值(即输出的x)
        return x

demo=Demo()
print(demo)
"""
[Run]
Demo(
  (conv1): Conv2d(3, 6, kernel_size=(3, 3), stride=(1, 1))
)

[解读]
就是Demo中有一个卷积层conv1,输入3通道图像,输出6通道图像。卷积核大小为3×3,步幅为1×1
"""

#将每张图像放入神经网络中,并查看大小
for data in dataloder:
    imgs,targets=data  #获取打包好的图像
    output=demo(imgs)  #将图像数据放入神经网络中,经过forward函数进行卷积操作
    print(imgs.shape) #举例其中一个结果:[Run] torch.Size([64, 3, 30, 30]),即第10行中batch_size=64,in_channel为6通道,32×32
    print(output.shape)  #举例其中一个结果:[Run] torch.Size([64, 6, 30, 30]),即第10行中batch_size=64,out_channel为6通道,卷积操作后尺寸变为30×30

#更直观地对处理前后图像进行可视化
writer=SummaryWriter("nn_logs")

step=0
for data in dataloder:
    imgs,targets=data
    output=demo(imgs)
    #torch.Size([64, 3, 32, 32])
    writer.add_images("input",imgs,step)

    #torch.Size([64, 6, 30, 30])
    #由于通道数为6,add_images不知道如何显示,所以用一个不太严谨的方法,reshape一下图像,变为[xxx,3,30,30],多余的像素放在batch_size里面
    output=torch.reshape(output,(-1,3,20,30))  #由于第一个值不知道是多少,所以写-1,它会根据后面的值去计算
    writer.add_images("output",output,step)
    step+=1

  • 结果中图像的尺寸变小,如果要使图像尺寸不变,可以考虑用padding进行填充

需要注意的是,要完全在网页上显示图像,打开路径时代码要变成:

tensorboard --logdir=路径 --samples_per_plugin=images=1000

三、图像输入输出尺寸转化计算公式

参数说明:

  • \(N:\) 图像的batch_size

  • \(C:\) 图像的通道数

  • \(H:\) 图像的高

  • \(W:\) 图像的宽

计算过程:

  • Input: \((N,C_{in}​,H_{in}​,W_{in}​) or (C_{in}​,H_{in}​,W_{in}​)\)

  • Output: \((N,C_{out}​,H_{out}​,W_{out}​) or (C_{out}​,H_{out}​,W_{out}​)\)

    • 其中有:

      \(H_{out}​=⌊\frac{H_{in}​+2×padding[0]−dilation[0]×(kernel\_size[0]−1)−1​}{stride[0]}+1⌋\)

      \(W_{out}​=⌊\frac{W_{in}​+2×padding[1]−dilation[1]×(kernel\_size[1]−1)−1​}{stride[1]}+1⌋\)

看论文的时候,有些比如像padding这样的参数不知道,就可以用这条公式去进行推导

最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

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

相关文章

Linux host映射 设置主机名并通过主机名找到指定系统

一、windows ping linux 1.windows进入到 C:\Windows\System32\drivers\etc\hosts 内,使用edit with notepad打开hosts文件,在下面添加需要寻找的ip以及其主机名。该ip以及主机名即linux的一致。需要查看linux主机名的在终端使用 hostname进行查看&#…

ARP协议相关

把ip地址解析成mac地址这里的mac地址就是路由器的mac地址 免费ARP 源ip和目的ip都是一样的,那怎么让其他人更新arp表呢?? 是因为目标mac是全f,是一个广播报文 如果冲突就是ip一样但是mac又不一样 代理ARP pc1和pc4是在同一个子网…

MySQL----慢查询日志

慢日志 MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,那么这些SQL就会被记录在慢查询日志当中,然后我们通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下。 查看相关信息 show va…

计算机体系结构重点学习(一)

从外部I/O与上层应用交互的整体软硬件过程 上层应用发出I/O请求:上层应用程序,如一个文本编辑器、网络浏览器或者任何软件应用,需要读取或写入数据时,会通过调用操作系统提供的API(如文件操作API、网络操作API等&…

【CDN】逆天 CDN !BootCDN 向 JS 文件中植入恶意代码

今天在调试代码,突然控制台出现了非常多报错。 这非常可疑,报错指向的域名也证实了这一点。 因为我的 HTML 中只有一个外部开源库(qrcode.min.js),因此只有可能是它出现了问题。 我翻看了请求记录,发现这…

西南石油大学24计算机考研数据,能源与人工智能招收调剂,专硕录取均分355!西南石油大学计算机考研考情分析!

西南石油大学(Southwest Petroleum University),简称“西南石大”,坐落于四川省成都市,是经中华人民共和国教育部备案的一所中央与地方共建、以四川省人民政府管理为主的高等院校,是世界一流学科建设高校、…

孝子黄香与颍川□董超

“香九龄,能温席,孝于亲,所当执。”家喻户晓、妇孺皆知的《三字经》让孝子黄香名扬千秋,成为“二十四孝”中闻名于世的“扇枕温衾”故事的主角。 黄香(公元68—122年),字文强,东汉江…

为什么微信输入法是比搜狗输入法更好的选择?

微信输入法官网:https://z.weixin.qq.com/ 最近使用搜狗输入法时,频繁弹出广告,实在令人烦恼,于是我干脆卸载了它。然而,电脑上没有输入法是不行的。经过在网上对比了许多输入法软件后,我发现了微信输入法。…

解读ROS功能包模块的步骤

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言解读ROS功能包模块的步骤前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 推荐开发经验及方法博客专栏: [https:/…

(游戏:三个数的加法)编写程序,随机产生三个一位整数,并提示用户输入这三个整数的和,判断用户输入的和是否正确。

(游戏:三个数的加法)编写程序,随机产生三个一位整数,并提示用户输入这三个整 数的和,判断用户输入的和是否正确。 package myjava; import java.math.*; import java.util.Scanner; public class cy {public static void main(String[]args)…

flask南京市旅游景点信息可视化-计算机毕业设计源码02941

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对南京市旅游景点信息可视化等问题&#xff0…

鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS

1、LFS文件系统结构体介绍 会分2部分来介绍结构体部分,先介绍LittleFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和LittleFS相关的一些结构体。 1.1 LittleFS的枚举结构体 在openharmony/third_party/littlefs/lfs.h头文件中定义LittleFS的枚举、…

2024新消费特点---探索消费升级与品牌力量

最近看到不少消费视频,想起之前听过江南春的一场分享,结尾总结了张思维导图,分享给大家! 随着时代的变迁,消费者的需求和市场环境也在不断演进。今天,我们将深入探讨消费升级的深层含义以及品牌如何在竞争…

【python】python指南(四):typing静态类型注解综述

一、引言 对于算法工程师来说,语言从来都不是关键,关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言,实习的时候做一个算法策略后台用的是php,毕业后做策略算法开发,因为要用spark&#x…

java安装并配置环境

安装前请确保本机没有java的残留,否则将会安装报错 1.安装java jdk:安装路径Java Downloads | Oracle 中国 百度网盘链接:https://pan.baidu.com/s/11-3f2QEquIG3JYw4syklmQ 提取码:518e 2.双击 按照流程直接点击下一步&#x…

L52--- 144. 二叉树的后序遍历(深搜)---Java版

1.题目描述 2.思路 (1)二叉树后序遍历:左右根 (2)根节点的压入: 根节点首先被压入stack中,然后被弹出并压入output中。 遍历过程: stack用于存储需要遍历的节点。 output用于反转遍历顺序。 入栈顺序: 左子节点先入栈,右子节点后入栈。这…

基于负相关误差函数的4集成BP神经网络matlab建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...............................................................…

用Java构建不规则数组:从入门到精通

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

视频网站下载利器yt-dlp参数详解

yt-dlp 是一个强大的命令行工具,用来下载 YouTube 和其他网站上的视频和音频。它拥有丰富的参数,可以定制下载行为,满足各种需求。本文将详细介绍 yt-dlp 的参数使用。 一、基本参数 -f, –format FORMAT: 指定下载格式,可以用视…

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告: 【切记,由于没有替换DTS的,开发板发热量巨大!因此配备鼓风机进行加强散热了】 0、adb 默认没有 1、HDMI IN 4K 2024/6/15 20:32 4K全屏 2、HDMI OUT …