[PyTorch][chapter 33][卷积神经网络]

这篇具有很好参考价值的文章主要介绍了[PyTorch][chapter 33][卷积神经网络]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

   参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强,

     图像卷积: 空间域图像增强

     图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除

某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的应用来说

比原始图像更适用。因此这类处理时为例某种特殊应用,去改善图像的质量,处理

的结果更适合于人的观察或机器的识别系统

[PyTorch][chapter 33][卷积神经网络]

目录

   1: 卷积

   2: LeNet-5

   3: Conv2d


一  卷积

      卷积神经网络的核心是卷积层

     1.1 卷积定义

      对图像的每一个点(x,y)执行以下操作

       1: 对预先定义的以(x,y)为中心点的领域内的像素运算

       2:  将1中的运算结果作为(x,y)点新的响应

      用数学公式来表示

      

      

      图像 

      卷积核 

     如 下图

    [PyTorch][chapter 33][卷积神经网络]

  1.2 卷积网络中的卷积

       在 传统的 数字图像处理里面,卷积核权重系数大小是固定的,

深度学习里面需要预先定义一下,通过训练得到里面权重系数

      

kernel channel 卷积核的个数
kernel size 卷积核大小
stride 滑动的步伐,决定滑动多少步可以到图像边缘
padding 填充系数,填0 或边缘像素的扩展,总长能被步长整除。

1.3  input

N 图片的个数
channel 图片的通道,如RGB c=3, 灰度图 c=1
width 图片的宽度
height 图片的高度

   例:

   [PyTorch][chapter 33][卷积神经网络]


二  LeNet-5

[PyTorch][chapter 33][卷积神经网络]

输入

                     [1,1,28,28]

1 1 28 28
图像个数 网络输入的通道数,灰度图=1 图像宽 图像高

LeNet-5 共包含 8 层

C1  卷积层

                   [6,1,5,5]

m=6 channel=1 width=5 height=5
网络输出的通道数: 卷积核个数 网络输入的通道数:图像的通道 卷积核的宽 卷积核的高

                    卷积核的channel 数必须和输入的channel 一致

                    偏置 bias: 每个卷积核对应一个bias,共6个

                     输出6张28*28特征图

                    C1 有 156 个可训练参数(每个滤波器 5x5=25 个 bunit 参数和一个 bias 参数,一共 6 个滤波器,共(5x5+1)x6=156个参数,共 156x(28x28)=122,304个连接。

                     

S2  采样层

         有 6 个 14x14 的特征图。特征图中的每个单元与 C1 中相对应特征图的 2x2 邻域相连接。S2层每个单元的 4 个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的 2x2 感受野并不重叠,因此 S2 中每个特征图的大小是 C1 中特征图大小的 1/4(行和列各 1/2)。

      2*2池化层

      输出 6个14*14 特征图

       S2 层有 12个(6x(1+1)=12)个可训练参数和 5880(14x14 (2 2+1) 6=5880)个连接。

C3 卷积层

       卷积核

m=16 channel=1 width=5 height=5
输出的通道数 输入的通道数 卷积核的宽 卷积核的高

                     输出 16个10*10的feature map

S4 下采样层

       由 16 个 5x5 大小的特征图构成。特征图中的每个单元与 C3 中相应特征图的 2x2 邻域相连接,跟 C1 和 S2 之间的连接一样。S4 层有 32 个可训练参数(每个特征图1个因子和一个偏置16x(1+1)=32)和 2000(16 (2 2+1)x5 x5=2000)个连接。

C5 卷积层

                   卷积核

m=120 channel=1 width=1 height=1
卷积核个数 图像的通道 卷积核的宽 卷积核的高

               输出 有 120 。由于 S4 层特征图的大小也为 5x5 (同滤波器一样),故 C5 特征图的大小为 1x1(5-5+1=1),这构成了 S4 和 C5 之间的全连接。

F6  全连接层

   有 84 个单元(之所以选这个数字的原因来自于输出层的设计)

,与 C5 层全相连。有 10164(84x(120x(1x1)+1)=10164)个可训练参数。如同经典神经网络,F6 层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给 sigmoid 函数产生单元i的一个状态。

最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有 84 个输入。

[PyTorch][chapter 33][卷积神经网络]


三 Conv2d函数详解

 def __init__(
        self,
        in_channels: int,
        out_channels: int,
        kernel_size: _size_2_t,
        stride: _size_2_t = 1,
        padding: _size_2_t = 0,
        dilation: _size_2_t = 1,
        groups: int = 1,
        bias: bool = True,
        padding_mode: str = 'zeros'  # TODO: refine this type
    ):
参数 意义
in_channels 网络输入的通道数,RGB =3 

out_channels

网络输出的通道数, 卷积核的个数
kernel_size 卷积核的大小
stride 是卷积过程中移动的步长。默认情况下是1。一般卷积核在输入图像上的移动是自左至右,自上至下
padding 填充,默认是0填充
dilation dilation:扩张。一般情况下,卷积核与输入图像对应的位置之间的计算是相同尺寸的,也就是说卷积核的大小是3X3,那么它在输入图像上每次作用的区域是3X3,这种情况下dilation=0。当dilation=1时,表示的是下图这种情况
groups 分组。指的是对输入通道进行分组,如果groups=1,那么输入就一组,输出也为一组。如果groups=2,那么就将输入分为两组,那么相应的输出也是两组。另外需要注意的是in_channels和out_channels必须能整除groups。
bias 偏置参数,该参数是一个bool类型的,当bias=True时,表示在后向反馈中学习到的参数b被应用
padding_mode 填充模式, padding_mode=‘zeros’表示的是0填充

[PyTorch][chapter 33][卷积神经网络]

 例

  

# -*- coding: utf-8 -*-
"""
Created on Mon May 15 15:31:26 2023

@author: chengxf2
"""

import torch
import torch.nn as nn

def main():
    
    img = torch.randn(10,3,28,28)
    conv = nn.Conv2d(3,16,4,stride=2,padding=0)
    
    output = conv(img)
    
    print(output.shape)
main()
===============
out: torch.Size([10, 16, 13, 13])

  输入:

             10张RGB 图片,图片大小28*28

             [10,3,28,28]

   卷积核

           [16,3,4,4]

  输出

      输出图像的宽度,高度利用下面的公式

       [PyTorch][chapter 33][卷积神经网络]

                          [PyTorch][chapter 33][卷积神经网络]

                             = 13

  torch 里面通过F 函数提供另一种,更加直接的方式定义了 卷积核的shape

[PyTorch][chapter 33][卷积神经网络]

参考:

卷积神经网络简介

卷积神经网络基础知识

CNN中的stride、kernel、padding计算 - 知乎

https://blog.csdn.net/jiaoyangwm/article/details/80011656/

Conv2d函数详解(Pytorch)_phil__naiping的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-446411.html

到了这里,关于[PyTorch][chapter 33][卷积神经网络]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch入门学习(八):神经网络-卷积层

    目录 一、数据准备 二、创建卷积神经网络模型 三、可视化卷积前后的图像 一、数据准备 首先,需要准备一个数据集来演示卷积层的应用。在这个示例中,使用了CIFAR-10数据集,该数据集包含了10个不同类别的图像数据,用于分类任务。使用PyTorch的 torchvision 库来加载CIFAR-1

    2024年02月07日
    浏览(32)
  • 【PyTorch】记一次卷积神经网络优化过程

    在深度学习的世界中,图像分类任务是一个经典的问题,它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集,包含了10个类别的60000张32x32彩色图像。在上一篇博客中,我们已经探讨如何使用PyTorch框架创建一个简单的卷积神经网络(CNN)来对CIFAR-10数

    2024年01月24日
    浏览(36)
  • 【Pytorch】基于卷积神经网络实现的面部表情识别

    作者:何翔 学院:计算机学院 学号:04191315 班级:软件1903 转载请标注本文链接: https://blog.csdn.net/HXBest/article/details/121981276 面部表情识别 (Facial Expression Recognition ) 在日常工作和生活中,人们情感的表达方式主要有:语言、声音、肢体行为(如手势)、以及面部表情等。在这

    2024年02月04日
    浏览(50)
  • Pytorch:搭建卷积神经网络完成MNIST分类任务:

    2023.7.18 MNIST百科: MNIST数据集简介与使用_bwqiang的博客-CSDN博客 数据集官网:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges 数据集将按以图片和文件夹名为标签的形式保存:  代码:下载mnist数据集并转还为图片  训练代码: 测试代码: 分类正确率不错:

    2024年02月17日
    浏览(30)
  • pytorch集智-5手写数字识别器-卷积神经网络

    简称:CNN,convolutional neural network 应用场景:图像识别与分类(CNN),看图说话(CNN+RNN)等 优越性:和多层感知机相比,cnn可以识别独特的模式,可以自动从数据中提取特征。一般机器学习需要特征工程,cnn可以自动识别,极大代替或取代了特征工程 和多层感知机原理不同

    2024年01月19日
    浏览(33)
  • 卷积神经网络——中篇【深度学习】【PyTorch】【d2l】

    5.5.1、理论部分 两个⌈ 卷积块 ⌋ 每个卷积块中的基本单元是一个⌈ 卷积层 ⌋、一个 ⌈ sigmoid激活函数 ⌋和 ⌈ 平均汇聚层 ⌋ 三个⌈ 全连接层密集块 ⌋ 早期神经网络,先使用卷积层学习图片空间信息,然后全连接层转换到类别空间。 5.5.2、代码实现 定义一个 Sequential块

    2024年02月11日
    浏览(45)
  • 卷积神经网络——上篇【深度学习】【PyTorch】【d2l】

    5.1.1、理论部分 全连接层后,卷积层出现的意义? 一个足够充分的照片数据集,输入,全连接层参数,GPU成本,训练时间是巨大的。 (convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法,需要更少的参数,在处理图像和其他类型的结构化数据

    2024年02月12日
    浏览(32)
  • 卷积神经网络——下篇【深度学习】【PyTorch】【d2l】

    5.10.1、理论部分 批量归一化可以解决深层网络中梯度消失和收敛慢的问题,通过固定每个批次的均值和方差来加速收敛,一般不改变模型精度。批量规范化已经被证明是一种不可或缺的方法,它适用于几乎所有图像分类器。 批量规划是一个线性变换 ,把参数的均值方差给拉

    2024年02月12日
    浏览(32)
  • 卷积神经网络学习—Resnet50(论文精读+pytorch代码复现)

    如果说在CNN领域一定要学习一个卷积神经网络,那一定非Resnet莫属了。 接下来我将按照:Resnet论文解读、Pytorch实现ResNet50模型两部分,进行讲解,博主也是初学者,不足之处欢迎大家批评指正。 预备知识 :卷积网络的深度越深,提取的特征越高级,性能越好,但传统的卷积

    2024年01月19日
    浏览(32)
  • 人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型

    大家好,我是微学AI,今天给大家介绍一下人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型,在本文中,我们将学习如何使用PyTorch搭建卷积神经网络ResNet模型,并在生成的假数据上进行训练和测试。本文将涵盖这些内容:ResNet模型简介、ResNet模型结构、生成假

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包