cnn卷积神经网络加速和实际在硬件中的计算过程(代码片段)

呆呆象呆呆 呆呆象呆呆     2023-03-20     586

关键词:

2维卷积操作,多通道多输出的卷积示意图

关于图像的解释说明

  • 输入Feature Map维度 W × H × C i n W \\times H \\times C_in W×H×Cin
  • 卷积核 Kernel 维度 W K × H K × C i n × C o u t W_K\\times H_K \\times C_in \\times C_out WK×HK×Cin×Cout
  • 输出Feature Map维度 W × H × C o u t W \\times H \\times C_out W×H×Cout

针对输入Feature Map进行如下的重新排布

关于图像的解释说明

  • 每一个矩形块代表该坐标位置的所有通道的数据的依次排序(举例F00即为立方体中F00位置所有通道 C i n C_in Cin个数据)
  • 第一横行F00F01F02F10F11F12F20F21F22表示第一个卷积计算需要的数据
  • 第二横行F01F02F03F11F12F13F21F22F23表示横向滑动后一个步长后的第二个卷积计算需要的数据
  • 省略号表示横向滑动完毕
  • 第四横行F10F11F12F20F21F22F30F31F32表示纵向滑动一个步长后的第一个卷积计算需要的数据,之后的数据依次类推
  • 最后经过排布,总共有的行数为输出Feature Map的点的数量 W × H W\\times H W×H ,我们这里为了简单设置下输入输出的单通道内的点数都是 W × H W\\times H W×H
  • 最终达到的效果使用更大的空间进行数据的重构,每一个数据被若干次的读取并存放在不同的位置,以方便后续将卷积转变为矩阵乘法

针对卷积核 Kernel 进行如下排布

关于图像的解释说明

  • 每一个不同颜色矩形块代表在对应颜色卷积核中该坐标位置的所有通道的数据的依次排序(举例红色W00即为红色立方体卷积核中W00位置所有通道 C i n C_in Cin个数据),共有 C o u t C_out Cout个卷积核
  • 第一列红色W00W01W02W10W11W12W20W21W22表示第一个卷积核的权重
  • 第二列黄色W00W01W02W10W11W12W20W21W22表示第二个卷积核的权重
  • 省略号表示所有卷积核数据的依次排布
  • 卷积核的数据没有空间倍增,虽然卷积核是滑动的一方,但是实际数据是没有变化的,所以针对所有的数据都是使用相同的权重参数进行计算,无序使用空间倍增换时间

原始卷积对应的操作

输出Feature Map 的第一个通道的第一个点的计算过程( ∗ * 代表所有通道的对应相乘,这里暂不展开)
F 00 ∗ W 00 + F 01 ∗ W 01 + F 02 ∗ W 02 + F 10 ∗ W 10 + F 11 ∗ W 11 + F 12 ∗ W 12 + F 20 ∗ W 20 + F 21 ∗ W 21 + F 22 ∗ W 22 F00*W00+F01*W01+F02*W02\\\\+F10*W10+F11*W11+F12*W12\\\\+F20*W20+F21*W21+F22*W22 F00W00+F01W01+F02W02+F10W10+F11W11+F12W12+F20W20+F21W21+F22W22
同理,第一个通道第二个点的计算过程,注意 W W W的坐标是不变的,只需要改变对应的 F F F的坐标即可
F 01 ∗ W 00 + F 02 ∗ W 01 + F 03 ∗ W 02 + F 11 ∗ W 10 + F 12 ∗ W 11 + F 13 ∗ W 12 + F 21 ∗ W 20 + F 22 ∗ W 21 + F 23 ∗ W 22 F01*W00+F02*W01+F03*W02\\\\+F11*W10+F12*W11+F13*W12\\\\+F21*W20+F22*W21+F23*W22 F01W00+F02W01+F03W02+F11W10+F12W11+F13W12+F21W20+F22W21+F23W22
再同理,第一个通道第二行第一个点的计算过程,注意 W W W的坐标是不变的,只需要改变对应的 F F F的坐标即可
F 10 ∗ W 00 + F 11 ∗ W 01 + F 12 ∗ W 02 + F 20 ∗ W 10 + F 21 ∗ W 11 + F 22 ∗ W 12 + F 30 ∗ W 20 + F 31 ∗ W 21 + F 32 ∗ W 22 F10*W00+F11*W01+F12*W02\\\\+F20*W10+F21*W11+F22*W12\\\\+F30*W20+F31*W21+F32*W22 F10W00+F11W01+F12W02+F20W10+F21W11+F22W12+F30W20+F31W21+F32W22
不同卷积核之间的操作类似

卷积转换为乘法

在此矩阵乘法中

  • 左矩阵所有的数据和右矩阵中的第一列做乘法,共有 W × H W\\times H W×H个输出点,即可得出输出Feature Map第一个通道的所有对应输出
  • 同理左矩阵所有数据和右矩阵第二列做乘法,就会生成后面输出Feature Map的后一个通道
  • 以此类推卷积就会转换为矩阵乘法,核心思想就是空间换时间

参考文献

矩阵卷积、矩阵相乘的转化_anan1205的博客-CSDN博客_卷积矩阵转化为矩阵相乘

CNN之卷积加速_圣空老宅的博客-CSDN博客

卷积层在神经网络中如何运算?

参考技术A卷积神经网络(ConvolutionalNeuralNetworks,CNN)的核心是进行卷积运算操作。在实际应用中往往采用多层网络结构,因此又被称为深度卷积神经网络。本文将从单个卷积的计算出发,带大家掌握卷积层在神经网络中的运算方... 查看详情

卷积层在神经网络中如何运算?

参考技术A卷积神经网络(ConvolutionalNeuralNetworks,CNN)的核心是进行卷积运算操作。在实际应用中往往采用多层网络结构,因此又被称为深度卷积神经网络。本文将从单个卷积的计算出发,带大家掌握卷积层在神经网络中的运算方... 查看详情

如何理解graphconvolutionalnetwork(gcn)

...与区别——GCN从入门到精(fang)通(qi)了解GCN(图卷积神经网络)之前,必须对离散卷积(具体说就是CNN中的卷积)有个清楚的认识。如何通俗易懂地解释卷积?,离散卷积本质就是一种加权求和。如图1所示,CNN中的卷积本... 查看详情

实战卷积神经网络

在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。CNN能做什么CNN是深度学习算法在图像处理领域的一个应用。主要被用来找寻... 查看详情

计算CNN实现中的卷积层

...【问题描述】:我正在尝试使用稀疏自动编码器训练卷积神经网络,以便计算卷积层的过滤器。我正在使用UFLDL代码来构建补丁和训练CNN网络。我的代码如下:====================================================== 查看详情

cnn中的步长的目的和重要性是啥

...制特征的抽取精度。参考技术A您好,CNN中的步长是指在卷积过程中,滑动窗口每次移动的步长大小。步长的重要性在于它可以控制卷积层的输出特征图的大小,从而影响模型的计算量,以及模型的准确率。步长可以控制卷积核... 查看详情

cnn卷积神经网络基础理论知识

目录卷积卷积神经网络特征图感受野CNN特点局部卷积参数共享多卷积核池化处理多通道多层处理卷积说到卷积,就不得不提互相关(cross-orrelation)。卷积实质就是一种互相关运算,只不过要在进行互相关运算前,要把(kernal)上下左... 查看详情

卷积神经网络(cnn)在语音识别中的应用

卷积神经网络(CNN)在语音识别中的应用作者:侯艺馨前言总结目前语音识别的发展现状,dnn、rnn/lstm和cnn算是语音识别中几个比较主流的方向。2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(FeedForwardDeepNeuralNetwork)引入到声... 查看详情

卷积网络压缩中的知识蒸馏综述

...载于:计算机科学与探索,专知近年来,卷积神经网络(CNN)凭借强大的特征提取和表达能力,在图像分析领域的诸多应用中取得了令人瞩目的成就。但是,CNN性能的不断提升几乎完全得益于网络模型... 查看详情

cnn卷积概念理解

...预测结果进一步说明:求解权重矩阵的过程与具体用什么神经网络模型结构没什么关系,任何的神经网络模型都可以用来求解这个权重矩阵,关键的问题在于,有些网络的参数过多,不好训练,或者根本训练不了,不收敛或者过... 查看详情

深度学习卷积神经网络大事件一览

  深度学习(DeepLearning)尤其是卷积神经网络(CNN)作为近几年来模式识别中的研究重点,受到人们越来越多的关注,相关的参考文献也是层出不穷,连续几年都占据了CVPR的半壁江山,但是万变... 查看详情

cnn基础计算机如何计算卷积操作

目录0.前言1.把卷积操作转换为矩阵乘法1.1将卷积核化为矩阵1.2将输入的FeatureMap化为矩阵1.3矩阵乘法0.前言对于卷积操作我们都很清楚其具体过程,不过卷积操作是如何在计算机上实现的呢?我们当然可以按照卷积的操作... 查看详情

理解nlp中的卷积神经网络(cnn)

...间,如果您有收获,请点赞关注:)一、理解NLP中的卷积神经网络(CNN)现在当我们听到神经网络(CNN)的时候,一般都会想到它在计算机视觉上的应用,尤其是CNN使图像分类取得了巨大突破, 查看详情

用于量子计算机的深度卷积神经网络

...决难题,包括机器学习。本文详细讲述量子计算机上卷积神经网络(CNN)的理论实现。我们将此算法称为QCNN,我们证明了它可以比CNN更快地运行,并且精度很高。为此,我们必须提出卷积积的量子形式,找到实现非线性和池化... 查看详情

机器学习-卷积神经网络cnn中的单通道和多通道图片差异(代码片段)

背景最近在使用CNN的场景中,既有单通道的图片输入需求,也有多通道的图片输入需求,因此又整理回顾了一下单通道或者多通道卷积的差别,这里记录一下探索过程。结论直接给出结论,单通道图片和多通... 查看详情

了解cnn

...自然语言处理等很多问题方面都表现出色。在不同类型的神经网络当中,卷积神经网络是得到最深入研究的。早期由于缺乏训练数据和计算能力,要在不产生过拟合的情况下训练高性能卷积神经网络是很困难的。标记数据和近来... 查看详情

基于zynq的cnn图像识别算法的优化与实现

卷积神经网络训练与硬件加速器实现 图像识别系统的第二部分是CNN加速器,CNN加速器的实现包含训练与推理两个阶段。一是卷积神经网络训练,提取相应的权重值和偏置值,即训练阶段。二是根据网络模型实现卷积... 查看详情

cnn中的卷积理解和实例

卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描。权衡因素:在不同的通道和不同的卷积核之间进行权衡在tensorflow中的函数为例... 查看详情