1 卷积神经网络:输入层

之前提到多层感知机的参数太多,导致训练耗时长并且对图像处理也不具有优势,因此大神们 就提出了多层神经网络,其中最经典的是卷积神经网络(Convolution Neural Network, CNN)。

一般 CNN网络分为输入层、卷积层、池化层、全连接层及输出层。以CNN中最经典的LeNet5网络结构来说明。LeNet5的结构为“输入层--卷积层1--池化层1--卷积层2--池化层2--全连接层1--全连接层2--输出层”,如下图所示:

输入层:主要是对输入数据进行求均值处理,使得样本数据的中心尽量调整到坐标系原点,包括将数据输出成特定格式,通过主成分分析PCA进行降维。总的来说,就是把输入数据尽量弄的少点,但又能代替原数据。

卷积神经网络:卷积层

卷积层:通常采用二维卷积计算对图像进行卷积,从而提取输入数据的关键特征,达到增强特征信息,过滤无用信息的目标,并为下一层输出特征图。

1、首先,先讲下关于卷积层的2个概念,一个是卷积核(又叫过滤器),一个是感受野。

卷积核:通过卷积核是 三维矩阵,由宽度、高度、深度三个参数组成。主要用于卷积过程中的加权求和

不同的卷积核效果也不一样 ,有些对颜色信息敏感,有些对图形形状敏感,因此一个CNN网络通常有多个卷积核。

感受野:卷积核作用的卷积窗口对应于原输入特征图的部分

上图为感受野示意图

按我当前的理解,卷积层输出的特征图就是感受野经过卷积核处理后输出的结果。

最后,经过卷积核处理后的输出,还需要通过激活函数处理,类似上次提到的阶跃函数。但是阶跃函数是线性的,而神经元本身也是线性的,因此一般常用的激活函数是sigmoid函数、tanh函数等非线性函数,从而增强神经网络的非线性拟合能力。

2、接着,讲讲卷积层的特性。

(1)局部连接

多层感知机用的是全连接模式,CNN采用的是局部连接模式。怎么理解?就是说在多层感知机里,多一个神经元需要处理同一块感受野;CNN中,一块感受野可能只由一个神经元处理。如下图右边所示。

(2)权重共享

由于每个神经元都有对应的权重数据,导致网络参数太多,无法快速调优网络;因此CNN采用的是权重共享,即所有神经元使用同一份权重数据。如下图右边所示。

3、再讲下卷积层计算方法

一种是直接卷积,就是对特征图进行边缘填充0,进行与权重矩阵相同维数的矩阵进行矩阵乘法。以示例图为例,将特征图外围扩展了一圈0,然后以每次左移的步长为2的频率进行与权重数据矩阵相乘。

▲此为直接卷积

第二种是矩阵乘法实现卷积。通过Img2Col函数将特征图和权重矩阵都展开成可实现相乘的维度,如下图

▲此为矩阵乘法卷积

针对卷积层的计算加速,又有5层层次的并行性,我不太感兴趣,就不去了解了。

书中提到,昇腾AI处理器采用的是矩阵乘法卷积的方式。而卷积层的参数量和计算量一般是神经网络中的重头,因此卷积层的合理设计可以算是一个产品的核心算法。

卷积神经网络:池化层

池化层:为了防止过拟合,通过在相邻卷积层之间进入池化处理,减少每一层特征值数目,保留主特征。

一般 池化处理是对不同位置区域提取具有代表性的特征值,如最大值、平均值,对应的池化函数即为最大池化和平均池化。池化层综合了输入特征图周围全部特征信息的反馈和影响,又减少了输出数据量,从而提升了神经网络的计算效率。

(这块技术,好像不是什么核心算法,因为作者也只是简单地带过。

全连接层输出

全连接层相当于一个多层感知机,对不同输入特征进行分类。

总结

看了第一章,只能说大致了解了神经网络的概貌,对其中很多的数学公式推导、一些优化处理并没有深入了解。感觉自己看了也会一知半解,容易遗忘,就不去仔细阅读了。

好啦,下次就进入《昇腾AI处理器》的第二单--行业背景,如芯片加速理论、深度学习框架等。

作者:华为云合作开发者 鹏哥贼优秀

【读一本书】《昇腾AI处理器架构与编程》--神经网络基础知识(2)的更多相关文章

  1. 【转帖】威盛x86 AI处理器架构、性能公布:媲美Intel 32核心

    威盛x86 AI处理器架构.性能公布:媲美Intel 32核心 https://www.cnbeta.com/articles/tech/920559.htm 除了Intel.AMD,宝岛台湾的威盛也 ...

  2. 各个处理器架构ISA编程指南

    1.Intel官方文档: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manu ...

  3. DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍

    一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来 ...

  4. AI学习---数据IO操作&神经网络基础

    数据IO操作 TF支持3种文件读取:    1.直接把数据保存到变量中    2.占位符配合feed_dict使用    3. QueueRunner(TF中特有的) 文件读取流程 文件读取流程(多线 ...

  5. AI的自学题库-竞赛-基础知识

    阿里云(天池): https://tianchi.aliyun.com/course?spm=5176.12281897.0.0.209439a9UwObn3 天池竞赛:https://tianchi ...

  6. linux运维、架构之路-linux基础知识

    1.PATH环境变量 LANG ——————>变量名字 $LANG ——————>查看变量内容 LANG= ——————>修改变量 系统环境变量填加内容前面使用export expo ...

  7. 【华为昇腾】 序言:从昇腾AI软硬件平台聊起

    2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了. 这一系列博客可以视作我从编者的角度,重新梳理的全书思路.明年入职商汤之后要 ...

  8. 用昇腾AI护航“井下安全”

    摘要:基于CANN(异构计算架构)打造的"智能矿山安全生产管理平台",能够更便捷和更高效地服务于更多矿山安全生产建设. 本文分享自华为云社区<华为携手云话科技助力矿山智能化, ...

  9. ARM、X86和AI处理器的区别

    ARM.X86和AI处理器的区别 目前主要的处理器架构有: X86: Intel, AMD, 海光, 兆芯 ARM: 华为,飞腾,华芯通,Cavium,Ampere,富士通,亚马逊 POWER:IBM ...

随机推荐

  1. 基于华为物联网IOT的应用开发 ---界面管理开发

    在前面随笔<基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装>介绍过IOT中应用侧SDK的封装,主要就是基于华为IOT的应用侧封装,以便在应用系统中进行调用.应用侧SDK ...

  2. [springboot 开发单体web shop] 5. 用户登录及首页展示

    用户登录及前端展示 用户登录 在之前的文章中我们实现了用户注册和验证功能,接下来我们继续实现它的登录,以及登录成功之后要在页面上显示的信息. 接下来,我们来编写代码. 实现service 在com.l ...

  3. Vue.js应用基础

    声明 这篇博文是我的Vue学习记录,其中参杂了不少我个人的理解,由于我并没有继续学习Vue的源码,所以不能保证这些理解都是正确的.如果这篇博文有幸被你读到,请带着批判的心情去审视它. 如果你发现了其中 ...

  4. Linux\centos 配置阿里云源

    # Aliyun 源配置CentOS1.备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2 ...

  5. windows中修改IP映射的位置

    windows中修改IP映射的位置 置顶 2018年08月05日 14:42:44 wangxiaolong0 阅读数:1473   在安装linux之后,发现windows不能通过映射来访问linu ...

  6. SpringBoot 整合NoSql

    通用配置 maven依赖 添加Spring-Web和Spring-Security依赖,使用Spring-Security是因为使用SpringBoot的Redis依赖时,必须添加Spring-Sec ...

  7. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器

    为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...

  8. webpack优化之玩转代码分割和公共代码提取

    前言 开发多页应用的时候,如果不对webpack打包进行优化,当某个模块被多个入口模块引用时,它就会被打包多次(在最终打包出来的某几个文件里,它们都会有一份相同的代码).当项目业务越来越复杂,打包出来 ...

  9. JMeter从0开始-笔记

    1.安装Jmeter之前 安装Jmeter之前需要先配置Java环境,我们下载的是jmeter4.0,所以java版本最好是选用java8以上的版本. 安装JDk1.6的步骤如下: 点击下载的JDK文 ...

  10. gcc悄无声色将静态函数内联了

    说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分.c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字 ...