# [cs231n (九)卷积神经网络 ][1]

2023-12-27 10:38
文章标签 卷积 神经网络 cs231n

本文主要是介绍# [cs231n (九)卷积神经网络 ][1],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cs231n (九)卷积神经网络

标签(空格分隔): 神经网络

文章目录

  • [cs231n (九)卷积神经网络 ][1]
  • 同类文章
  • 0.回顾
  • 1. 引言
  • 2. 总体概述
  • 3. 构建卷积网络的每个层
      • 1. 卷积层
      • 2. pooling池化层
      • 3. 归一化层
      • 4. 全连接层
      • 5. 全连接层转化为卷积层
  • 4. 如何构建卷积神经网络的结构
      • 1. 层的排列方式
      • 2. 层的大小设置规律
      • 3. 相关案例学习(LeNet/ AlexNet/ ZFNet/ GoogLeNet/ VGG)
      • 4. 一些计算上的考虑
  • 6. 其他资源
  • 转载和疑问声明
  • 我祝各位帅哥,和美女,你们永远十八岁,嗨嘿嘿~~~

同类文章

cs231n (一)图像分类识别讲了KNN
cs231n (二)讲了线性分类器:SVM和SoftMax
cs231n (三)优化问题及方法
cs231n (四)反向传播
cs231n (五)神经网络 part 1:构建架构
cs231n (六)神经网络 part 2:传入数据和损失
cs231n (七)神经网络 part 3 : 学习和评估
cs231n (八)神经网络总结:最小网络案例研究
cs231n (九)卷积神经网络


0.回顾

cs231n (一)图像分类识别讲了KNN
cs231n (二)讲了线性分类器:SVM和SoftMax
cs231n (三)优化问题及方法
cs231n (四)反向传播
cs231n (五)神经网络 part 1:构建架构
cs231n (六)神经网络 part 2:传入数据和损失
cs231n (七)神经网络 part 3 : 学习和评估
cs231n (八)神经网络总结:最小网络案例研究

1. 引言

经过一系列的学习终于抵达了传说中的卷积神经网络,他和一般的网络很类似,前面学过的东西这里全都能用上,那么有什么不同呢?

ConvNet结构假设输入是图像,这就允许我们将某些属性编码到体系结构中,来吧,一般究竟哈?~~~emmmm

2. 总体概述

总体结构就是:输入向量————>隐含层非线性变换————>输出

对于前面讲过的,CIFAR-10数据是32x32x3=3072(权重数), 如果图像很大呢,比如一般图像的尺寸都达到了1000x1000x3 = 3000000(权重),这时候:

计算机说:我不干了,累死我算了
卷积网络中的神经元是三维排列的,卷积只与前一层的部分连接,那么对于DIFAR数据最后一层应该是1x1x10。

1

左边:三层神经网络 右边:卷积神经网络


卷积神经网络由层组成, 每层都有相应的API,用一些可导函数把输入的3D数据转换为输出的3D数据。

3. 构建卷积网络的每个层

主要由三层组成:卷积——————池化——————全连接层!
比如CIFAR数据的话:

输入层-————卷积层-————ReLU层(尺寸不变-———池化层-———全连接层
32x32x3————32x32x12——————32x32x12————————16x16x12————————1x1x10

  • 输入数据变为——————输出数据
  • CNN由很多层一般包含上述几种层
  • 每层输入是3D数据,然后使用可导函数把它变为3D输出数据
  • 有的层含参数,有的没有(卷积层和全连接层有,ReLU层和池化层没)
    2

上图中的结构是一个小型VGG网络

1. 卷积层

这层是核心层,主要是由一些滤波器构成,现在使用一套滤波器(比如12个), 每层都会产生一个图数据,然后叠加就是此层的输出。

**例如:**输入数据体尺寸[32x32x3](比如CIFAR-10的RGB图像),卷积核大小是5x5,那么卷积层中的每个神经元会有输入数据体中[5x5x3]区域的权重,共5x5x3=75个权重(还要加一个偏差参数)。注意这个连接在深度维度上的大小必须为3,和输入数据体的深度相同。

3

左边:输入数据,蓝色是5个卷积核叠加形成的
右边:计算的还是权重和输入的内积。

卷积层的输出: 由深度(多深),步长(一次移动多远),零填充(图像周围加零)决定。

输入数据尺寸:W 卷积核大小:F
步长:S 零填充数量:P

输出的尺寸就是: (W-F+2P)/S + 1

P取多少为好? 输入与输出相同尺寸时候满足:P=(F-1)/2

4

参数共享:将深度维度上一个单独的2维通道(就是一层)看做深度切片(depth slice)
比如:一个数据体尺寸为[55x55x96]的就有96个深度切片,每个尺寸为[55x55],每个深度切片上的神经元都使用同样的权重和偏差,

这样卷积层输出就有96个权重不同权重集,权重集合称为滤波器(filter),这96个滤波器的尺寸都是[11x11x3],每个都被55x55个神经元共享?

5

Krizhevsky等学习到的滤波器例子

具体Numpy例子

  1. 位于(x,y)的深度列将会是X[x,y,:]
  2. 位于深度d的切片应该是X[:,:,d]

假设输入数据X的尺寸X.shape:(11,11,4),不使用零填充,滤波器的尺寸:F=5,步长S=2,
输出尺寸就是(11-5)/2+1=4

  • V[0,0,0] = np.sum(X[:5,:5,:] * W0) + b0
  • V[1,0,0] = np.sum(X[2:7,:5,:] * W0) + b0
  • V[2,0,0] = np.sum(X[4:9,:5,:] * W0) + b0
  • V[3,0,0] = np.sum(X[6:11,:5,:] * W0) + b0

小结: 总结一下卷积层的性质:

输入数据体的尺寸为$ W_1\times H_1\times D_1$

4个超参数:
- 滤波器的数量K

  • 滤波器的空间尺寸F
  • 步长S
  • 零填充数量P

输出数据体的尺寸为$W_2\times H_2\times D_2 , 其 中 : ,其中: W_2=(W_1-F+2P)/S+1$

H 2 = ( H 1 − F + 2 P ) / S + 1 H_2=(H_1-F+2P)/S+1 H2=(H1F+2P)/S+1 (宽度和高度的计算方法相同)
D 2 = K D_2=K D2=K

  1. 由于参数共享,每个滤波器包含 F ⋅ F ⋅ D 1 F\cdot F\cdot D_1 FFD1个权重,卷积层一共有 F ⋅ F ⋅ D 1 ⋅ K F\cdot F\cdot D_1\cdot K FFD1K个权重和 K K K个偏置。

  2. 在输出数据体中,第d个深度切片(空间尺寸是 W 2 × H 2 W_2\times H_2 W2×H2),用第d个滤波器和输入数据进行有效卷积运算的结果(使用步长S),最后在加上第d个偏差。

对这些超参数,常见的设置: F=3,S=1,P=1
动态演示
输入: W 1 = 5 , H 1 = 5 , D 1 = 3 W_1=5,H_1=5,D_1=3 W1=5,H1=5,D1=3
卷积层参数: K = 2 , F = 3 , S = 2 , P = 1 K=2,F=3,S=2,P=1 K=2,F=3,S=2,P=1
输出: 是(5-3+2)/2+1=3

有2个滤波器,滤波器的尺寸是 3 ⋅ 3 3\cdot 3 33,它们的步长是2.

6

动图

1x1卷积,有意义: 因为如果我们处理的三维卷积,那么比点积更有效。
扩张卷积让滤波器中元素之间有间隙,在某维度上滤波器w的尺寸是3,
那么计算输入x的方式是: w [ 0 ] ∗ x [ 0 ] + w [ 1 ] ∗ x [ 1 ] + w [ 2 ] ∗ x [ 2 ] w[0]*x[0] + w[1]*x[1] + w[2]*x[2] w[0]x[0]+w[1]x[1]+w[2]x[2],此时扩张为0.
那么计算为, 如果扩张为1: w [ 0 ] ∗ x [ 0 ] + w [ 1 ] ∗ x [ 2 ] + w [ 2 ] ∗ x [ 4 ] w[0]*x[0] + w[1]*x[2] + w[2]*x[4] w[0]x[0]+w[1]x[2]+w[2]x[4]

2. pooling池化层

一般会在连续的卷积层之间会周期性地插入一个池化层,可以降低数据体的维度,减少参数数量,能有效控制过拟合。

输入数据体尺寸 W 1 ⋅ H 1 ⋅ D 1 W_1\cdot H_1\cdot D_1 W1H1D1
输出数据体尺寸 W 2 ⋅ H 2 ⋅ D 2 W_2\cdot H_2\cdot D_2 W2H2D2,其中
W 2 = ( W 1 − F ) / S + 1 W_2=(W_1-F)/S+1 W2=(W1F)/S+1
H 2 = ( H 1 − F ) / S + 1 H_2=(H_1-F)/S+1 H2=(H1F)/S+1
D 2 = D 1 D_2=D_1 D2=D1

在池化层中很少用零填充
常用参数:F = 3,S = 2; F = 2, S = 2.

有平均池化,有最大池化, L2池化等。

7

其实池化层的未来趋势就是很少使用。

3. 归一化层

归一化层几乎不用,因为他对网络性能提升很少。

4. 全连接层

神经元对前一层连接和前面学过的一般神经网络网络连接是一样的。

5. 全连接层转化为卷积层

  • 卷积层和全连接层是可以相互转化的
    如何转转化?
    一般hi全连接层转化为卷积层更有用
    输入:224x224x3
    经过一系列变换
    某层数据体:7x7x512

AlexNet中就是,使用5个池化层,每次尺寸下降一半,最终尺寸为224/2/2/2/2/2=7
AlexNet使用两个尺寸为4096的全连接层,最后有1000个神经元的全连接层计算分数。

这3个全连接层中的一个转化为卷积层的话:

  • 对第一个连接区域 7x7x512 滤波器F=7,输出就是1x1x4096
  • 对于第二层,滤波器F=1, 输出就是:1x1x4098
  • 最后一个全连接层,F=1,输出就是:1x1x1000

4. 如何构建卷积神经网络的结构

那么如何组合这些,卷积层、池化层、全连接层、ReLU也算一层。

1. 层的排列方式

常见结构:**INPUT —> [[CONV -> RELU]*N -> POOL?]M -> [FC -> RELU]K —> FC
其中*N代表重复了N次,N<=3 且M>=0,K>=0,通常K<3,下面列出了常见的网络结构:

  • INPUT -> FC,实现一个线性分类器,此处N = M = K = 0
  • INPUT -> CONV -> RELU -> FC
  • INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC
  • INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]*3 -> [FC -> RELU]*2 -> FC
  • 上面的网络结构:在执行具有破坏性的池化前,多重的卷积可从输入中学到更多复杂特征

多个小滤波器卷积组合好于一个大滤波器
有点:输出更多的特征,且使用的特征少。
缺点:在进行反向传播时,中间的卷积层可能会导致占用更多的内存。

2. 层的大小设置规律

**输入层:**应该是可以被2整除很多次的,

3. 相关案例学习(LeNet/ AlexNet/ ZFNet/ GoogLeNet/ VGG)

4. 一些计算上的考虑

6. 其他资源

转载和疑问声明

如果你有什么疑问或者想要转载,没有允许是不能转载的哈
赞赏一下能不能转?哈哈,联系我啊,我告诉你呢 ~~
欢迎联系我哈,我会给大家慢慢解答啦~~~怎么联系我? 笨啊~ ~~ 你留言也行

你关注微信公众号1.机器学习算法工程师:2.或者扫那个二维码,后台发送 “我要找朕”,联系我也行啦!

(爱心.gif) 么么哒 ~么么哒 ~么么哒
码字不易啊啊啊,如果你觉得本文有帮助,三毛也是爱!

我祝各位帅哥,和美女,你们永远十八岁,嗨嘿嘿~~~

这篇关于# [cs231n (九)卷积神经网络 ][1]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542849

相关文章

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算法Seq2Seq端到端神经网络算法 总结 自然语言处理系列六十三 神经网络算法》LSTM长短期记忆神经网络算法 长短期记忆网络(LSTM,Long S

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用,卷积层也逐渐衍生出了许多变种,比较有代表性的有: 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolution ),下面分别介绍下。 1. 分组卷积 在普通的卷积操作中,一个