卷积神经网络(CNN)结构详解

article/2025/9/26 2:57:52

一、CNN的基本结构:

1.图像就是输入层

2.接着是CNN特有的卷积层(convolution),卷积层的自带激活函数使用的是ReLU

3.接着是CNN特有的池化层(pooling),

4.卷积层+池化层的组合可以在隐藏层中出现很多次。也可以灵活组合,卷积+卷积+池化、卷积+卷积等

5.在若干卷积层+池化层之后是全连接层(fully connected layer),其实就是DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类

6.一般fc就为CNN的全连接层。全连接层一般包括最后用softmax激活函数的输出层

二、卷积的原理:

https://mp.csdn.net/editor/html/109519709

总结:一补二乘三遍历,CNN中采用的是valid模式

三、多维卷积,

如有三个5*5的矩阵,三个2*2的卷积核,也就是被卷机矩阵是5*5*3的tensor,卷积核是2*2*3的tensor。或者输入是RGB图像,可以分成三层。那么在卷积的时候,就是将三个二维的tensor进行卷积之后结果相加再加上偏置。

参考动图https://cs231n.github.io/assets/conv-demo/index.html

注意 一排下来是一个卷积核,只不过这个卷积核的tensor.size()是n x n x 3。对应的偏置也是3维的tensor

四、CNN中特有的池化层

池化,就是将输入张量的各个子矩阵进行维度压缩。有max和average两种方式。

filter的维度为nxn,那么就用该filter在输入张量上扫过,每一个重叠小块的最大值或平均值作为输出。就实现将n维变到1维。

## CNN的输入:

如果是2维张量,就是有一个2维矩阵n x n。

如果是3维张量,就是有m个2维矩阵 n x n x m。m不一定是3。

如果是4维张量,就是有k个3维矩阵,每一个三维矩阵又是m个二维矩阵。所以四维输入的矩阵形式其实是 n x n x m x k。 k也不一定是4.

CNN的全连接层

经过卷积层和池化层,输入层被输出成了一堆二维的tensor。

全连接层的每一层都是有许多神经元的平铺。基本结构如下图

那么如何将前面输出的tensor转换到1xn的形式呢。n为第一层全连接层的神经元个数。

 此文 讲:

类似于做卷积。在这里卷积核的 kernel_size = 3x3x5。也就是用5个3x3的子矩阵 对卷积池化层的输出结果 进行卷积。每一个卷积核卷积之后的结果就是一个神经元的输入。所以要将这5个子矩阵对应到4069个神经元的第一层全连接层,就是用维度为3x3x5x4069的卷积核进行卷积。

这里作用有两个:

1.做卷积,将卷积池化层的输出对应到全连接层。

2.把分布式特征representation映射到样本标记空间,输出为一个值,根据这个值判断分类结果。大大减少特征位置对分类带来的影响

3.多个全连接层,能够有效解决非线性问题

# 全连接层一般会进行dropout正则化。这里有个特点,对批训练的第一批数据训练师,随机失活一些神经元,得到的残缺DNN结构对数据进行训练,并更新整个网络的所有神经元的w和b参数。

    训练后,失活的神经元复活。下一批数据来的时候,又随机失活一部分神经元得到一个新的残缺DNN结构,这两次得到的结构并不一定相同。

 

CNN前向传播算法

一、CNN输入层前向传播到卷积层

1.卷积核的维度(子矩阵的个数)和输入tensor的子矩阵个数是一致的。

不管输入维度是多少,前向传播算法可以表示为:

上标是第几层,a是该层的输入,w是该层的权重矩阵,b是该层的偏置。z是该层输入的中间输出,δ是激活函数,❉表示卷积。

2.卷积核的个数和维度需要在卷积层中定义,是卷积层的一个属性。就像卷积层自带的relu

激活函数一样。

3.卷积核的个数一般不止一个,比如是k,那么该卷积层的输出或者下一层卷积层的输入就是k个。

4.填充padding(p),为了更好的识别边缘,一般在输入矩阵周围添加几层0。层数取决于卷积核的维度。

5.步幅stride。

二、隐藏层前向传播到卷积层。

前面所有的卷积层池化层包括全连接层组成的就是隐藏层。

这里的输入是隐藏层来的。

也需要定义CNN模型的卷积核的个数,卷积核子矩阵的维度,填充大小,及步幅。

三、隐藏层前向传播到池化层:

1.定义池化趋于的大小k

2.池化的标准,max或者average

3.若输入是nxn ,输出的维度就是n/k

四、隐藏层前向传播到全连接层

1.激活函数的选择rule、sigmoid、tanh、softmax

2.经过若干全连接层(一般不止一层),最后一层就是输出层。输出层一般选softmax做激活函数。其他的一般选另外的激活函数。

3.要定义全连接层各层的神经元

五、总结

1.输入是一个图片样本。CNN模型的层数,所有隐藏层的参数和类型
2.若为卷积层,给出卷积核的个数、维度、填充、步幅

  若为池化层,给出池化区域的大小k和池化标准

   对于全连接层,给出各层的神经元数和激活函数的类型

3.根据填充,得到输入的张量a^1.并初始化所有隐藏层的参数w和b

4.for l in range(2,L):

    若为卷积层,输出

    若为池化层,输出

    若为全连接层,输出

    若为最后一层全连接层,即输出层

 

最后补充一句:卷积层和全连接层表达式看似相同,实际有很大的区别:

在卷积层中W是卷积核,星号(*)表示卷积,W卷积核矩阵是右乘的。W是却别与被卷机矩阵a的矩阵。

在全连接层中,W是参数矩阵,b是偏置,是单纯的矩阵的乘法而不是卷积,且是左乘。W和b 都是该层神经网络附带的属性只不过在训练过程中要不断跳整。

 

参考:CNN 入门讲解:什么是全连接层(Fully Connected Layer)?

深度神经网络(DNN)的正则化

卷积神经网络(CNN)模型结构

卷积神经网络(CNN)前向传播算法

 


http://chatgpt.dhexx.cn/article/f4Uxtwmo.shtml

相关文章

CNN的实现(附代码)

前言 前文已经单独实现了卷积层和池化层,现在来组合这些层,搭建进行手写数字识别的CNN。 这个简单的CNN网络构成如下。 网络的构成是“Convolution - ReLU - Pooling -Affine - ReLU - Affine - Softmax”,我们将它实现为名为SimpleConvNet…

CNN卷积网络简介

CNN卷积网络 CNN卷积网络的结构 输入层: 输入层是3232 RGB图像。 注:有必要计算每一层输出的图片大小。 卷积层: 卷积层的核心在于卷积核与激活函数。   卷积层最主要的作用是寻找与卷积核匹配的特征,因为与卷积核符合(卷积核…

CNN的通俗理解

Agenda 1 卷积神经网络Convolutional Neural Networks,CNN1.1 前言1.2 图像转化成矩阵1.3 卷积核1.4 特征图feature map1.5 激活函数1.6 池化1.7 训练 1 卷积神经网络Convolutional Neural Networks,CNN 1.1 前言 卷积神经网络是针对图像的深度学习框架。 1.2 图像转化成矩阵…

CNN网络详解

分割线----------------------------------   这里更新过一次,在朋友的提醒下,我发现这份代码不是很容易懂。我使用了Pytorch给的官方demo重新实现了LeNet,并做出了详细解释,如果理解下面代码有问题,可以先看我的这篇…

卷积神经网络(CNN)基本概念

一、卷积神经网络基本概念 卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元相连接。在CNN的一个卷积层中,通常包含若干个特征平面,每个特征平面都由一些矩形排列的神经元…

CNN简单介绍及基础知识

文章目录 一)卷积神经网络历史沿革 二)CNN简单介绍 三)CNN相关基础知识 前言 在过去的几年里,卷积神经网络(CNN)引起了人们的广泛关注,尤其是因为它彻底改变了计算机视觉领域,它是近年来深度学习能在计算机…

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 前言 之前我所在的公司七月在线开设的深度学习等一系列课程经常会讲目标检测,包括R-CNN、Fast R-CNN、Faster R-CNN,但一直没有比较好的机会深入(但当你对目标检测…

理解 CNN

理解 CNN 注意:下面提到的图像指位图 目录 理解 CNNCNN人类的视觉原理几个关键层卷积层(fliter、kernel)池化层 (pooling) 激活层(activate)全连接层(Linear) pytorch实现TextCNN卷积传播图解不同视角看CNN 参考 CNN 卷积神经网络-CNN 最擅长的就是图片的处理。它…

【深度学习】CNN算法

一.定义: 卷积神经网络(CNN),是一类包含卷积计算且具有深度结构前馈神经网络,是深度学习(deep learning)的代表算法之一。 卷积神经网络具有表征能力,能够按其阶层结构对输入信息进…

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用

一、CNN简介 1. 神经网络基础 输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。 输出层(Output layer),讯息在神经元链接中传输、分析、权…

CNN(卷积神经网络)详解

Why CNN 首先回答这样一个问题,为什么我们要学CNN,或者说CNN为什么在很多领域收获成功?还是先拿MNIST来当例子说。MNIST数据结构不清楚的话自行百度。。 我自己实验用两个hidden layer的DNN(全连接深度神经网络)在MNIST上也能取得不错的成绩…

CNN(Convolutional Neural Network)

CNN的基本结构 图中是一个图形识别的CNN模型。可以看出最左边的船的图像就是我们的输入层,计算机理解为输入若干个矩阵,这点和DNN基本相同。 接着是卷积层(Convolution Layer),这个是CNN特有的。卷积层的激活函数使用的是ReLU。我…

CNN(卷积神经网络)是什么?(转)

 作者:机器之心 链接:https://www.zhihu.com/question/52668301/answer/131573702 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 卷积神经网络,听起来…

CNN

卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。CNN在图像分类数据集上有非常突出的表现。 DNN与CNN 下图为DNN: 下图为CNN: 虽然两张图的结构…

CNN卷积神经网络(图解CNN)

文章目录 什么是卷积神经网络:1)网络结构2)局部感受野与权值共享3)卷积层、下采样层、全连接层卷积神经网络相比一般神经网络在图像理解中的优点:边缘检测卷积运算卷积层卷积后维度公式及运算示例 Padding填充Valid卷积…

CNN-卷积神经网络

一、基本的神经网络结构 神经网络其实就是按照一定规则连接起来的多个神经元,输入向量的维度和输入层(Input Layer)神经元个数相同,分类问题的类别个数决定输入层(Output Lazyer)的神经元个数。第N层的神经…

CNN是个啥?

阅读须知 本文主要意义是为了方便对CNN有个最直观的理解,知道这个玩意到底是干嘛的。文章本体是UP自己自学深度学习这块的时候做的笔记,内容均为网上收录。发在这里的原因是因为,也许有很多像UP一样不理解了就完全学不了的人存在&#xff0c…

(太长太全面了)CNN超详细介绍

原文链接:https://blog.csdn.net/jiaoyangwm/article/details/80011656 文章目录 1、卷积神经网络的概念2、 发展过程3、如何利用CNN实现图像识别的任务4、CNN的特征5、CNN的求解6、卷积神经网络注意事项7、CNN发展综合介绍8、LeNet-5结构分析9、AlexNet10、ZFNet10…

深度学习——卷积神经网络(CNN)简介

卷积神经网络简介 文章目录 卷积神经网络简介前言一.如何理解卷积1.1什么是卷积1.2 为什么要卷积 二.神经网络的结构三.卷积层四.池化层五.全连接层六.数据训练七.常见的卷积神经网络1. LeNet2 AlexNet3. VGG net4. ResNet 前言 卷积神经网络(Convolutional Neural…

CNN卷积神经网络 的学习记录一

1. 概述 卷积神经网络的特点:一方面它的神经元间的连接是非全连接的, 另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的)。 上图左:图像有1000*1000个像素,有10^6个隐层神经元,进行…