CN109670582B - 一种全定点化神经网络的设计方法 - Google Patents

一种全定点化神经网络的设计方法 Download PDF

Info

Publication number
CN109670582B
CN109670582B CN201811622880.0A CN201811622880A CN109670582B CN 109670582 B CN109670582 B CN 109670582B CN 201811622880 A CN201811622880 A CN 201811622880A CN 109670582 B CN109670582 B CN 109670582B
Authority
CN
China
Prior art keywords
neural network
bit width
fixed point
fixed
training
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811622880.0A
Other languages
English (en)
Other versions
CN109670582A (zh
Inventor
陈敬渝
张志兴
刘详凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Nazhi Technology Co ltd
Original Assignee
Sichuan Nazhi Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Nazhi Technology Co ltd filed Critical Sichuan Nazhi Technology Co ltd
Priority to CN201811622880.0A priority Critical patent/CN109670582B/zh
Publication of CN109670582A publication Critical patent/CN109670582A/zh
Application granted granted Critical
Publication of CN109670582B publication Critical patent/CN109670582B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种全定点化神经网络的设计方法。所述方法包括设计神经网络框架,选择一种饱和激活函数作为神经网络激活函数的步骤;根据神经网络的应用场景选择数据初始的整体定点位宽的步骤;根据精度要求及神经网络的数据特征,确定初始的小数部分位宽和初始的整数部分位宽的步骤;将小数部分和整数部分进行二进制转换的步骤;把转换后的定点格式数据作为输入,进行神经网络训练、记录训练结果的步骤;记录训练测试结果的步骤;重复步骤二至六,直到找到满足需求的整体定点位宽、小数位宽、整数位宽作为最终的神经网络定点化架构的步骤。本发明采用定点数对神经网络的设计进行计算,占用资源少,功耗及成本低。

Description

一种全定点化神经网络的设计方法
技术领域
本发明涉及人工智能神经网络技术领域,特别涉及一种全定点化神经网络的设计方法。
背景技术
人工神经网络是人类仿照生物神经网络的工作方式设计的计算模型。神经元(Neuron)是神经网络的基本单元,也称节点(Node),它从外部或其它节点收到输入(Input),并通过一个激活函数(Activation Function)来计算输出(Output);每一个输入都对应权重(Weight),即这个节点收到的每一个输入的相对重要性;偏置(Bias)可以理解为一种特殊的输入。
深度学习是机器学习的一个领域,研究复杂的人工神经网络的算法、理论、及应用。自从2006年被Hinton等提出以来,深度学习得到了巨大发展,已被成功地应用到图像处理、语音处理、自然语言处理等多个领域,取得了巨大成功,受到了广泛的关注,成为当今具有代表性的IT先进技术。
深度学习本质是复杂的非线性模型的学习,从机器学习的发展史来看,深度学习的兴起代表着机器学习技术的自然演进。1957年,Rosenblatt提出了感知机模型(Perceptron),是线性模型,可以看作是两层的神经网络;1986年,Rumelhart等开发了后向传播算法(Back Propagation),用于三层的神经网络,代表着简单的非线性模型;1995年,Vapnik等发明了支持向量机(Support Vector Machines),RBF核支持向量机等价于三层的神经网络,也是一种简单的非线性模型。2006年以后的深度学习实际使用多于三层的神经网络,又被称为深度神经网络,是复杂的非线性模型。深度神经网络还有若干个变种,如卷积神经网络(Convolutional Neural Network)、循环神经网络(Recurrent NeuralNetwork)。
深度神经网络实际是复杂的非线性模型,拥有复杂的结构和大量的参数,有非常强的表示能力,特别适合于复杂的模式识别问题。
在神经网络的设计过程中,通常都是采用浮点数进行运算。但浮点数运算相对于定点运算单元而言,存在占用资源多,面积大、功耗高、成本高等问题。特别地,对于FPGA和专用集成电路(ASIC)芯片,涉及硬化神经网络时,还存在时序不好收敛的问题。本发明直接采用定点化的方法设计神经网络,可以解决上述问题。
发明内容
为解决上述技术问题,本发明提供了一种全定点化神经网络的设计方法,包括如下步骤:
步骤一:设计神经网络框架,选择一种饱和激活函数作为神经网络激活函数;其中,饱和激活函数为SRelu;
步骤二:根据神经网络的应用场景选择数据初始的整体定点位宽;
步骤三:根据精度要求及神经网络的数据特征,确定初始的小数部分位宽和初始的整数部分位宽;
步骤四:将小数部分和整数部分进行二进制转换,把浮点数转化为对应长度的二进制定点格式数据;
步骤五:把转换后的定点格式数据作为输入,用于神经网络的建模和计算,进行神经网络训练,记录当前的训练的整体定点位宽,小数位,整数位,训练测试精度记录训练结果;其中,神经网络训练采用的训练样本为灰度图像样本。
步骤六:重复步骤二至五,直到找到满足需求的整体定点位宽、小数位宽、整数位宽作为最终的神经网络定点化架构;
GPU基于所述最终的神经网络定点化架构对灰度图像进行处理。
进一步的,步骤二中,整体定点位宽为8bit~128bit。
进一步的,步骤三中,初始可以选择小数位点占3/4位宽比例,整数位占1/4位宽比例。
进一步的,步骤五中,把转换后的定点格式数据作为输入所计算得到的结果经过一个饱和激活函数进行激活,然后作为下一级神经网络的输入。
进一步的,步骤六中,利用迭代仿真训练选择整体定点位宽,根据测试精度和项目所期望的精度判断对向上还是向下进行迭代:当精度优先,从大的位宽向小的位宽逐步减少;在满足精度要求的前提下,选择一个最小的位宽;当功耗及成本优先,则从小的位宽向大的位宽逐步增加,在功耗及成本满足的前提下,选择一个最大的数据位宽。
进一步的,步骤五中,在神经网络拓扑结构中加入进制转换的代码,把浮点数转化为对应长度的二进制定点,以二进制定点数进行运算。
进一步的,步骤五中,采用误差反向传播算法进行神经网络训练。
与现有技术相比,本发明有以下积极效果:
本发明采用定点数对神经网络的设计进行计算,占用资源少,功耗及成本低,尤其对于FPGA和专用集成电路(ASIC)芯片等设计硬化神经网络时,能很好的进行时序收敛。
附图说明
图1为本发明流程图。
具体实施方式
本发明的设计构思为:对人工智能神经网络的全定点化设计,简化神经网络,提高运算资源利用率,降低面积,节省功耗和成本。
本发明包括如下步骤:
步骤一:设计神经网络框架,选择一种饱和激活函数作为神经网络激活函数。
步骤二:根据神经网络的应用场景选择初始的整体定点位宽。
结合精度要求,功耗要求,成本要求,可以选择8bit~128bit作为整体定点位宽。整体定点位宽包括小数部分位宽和整数部分位宽。
步骤三:根据精度要求及神经网络的数据特征,确定初始的小数部分位宽和整数部分位宽。
作为迭代的一个环节,可以根据需要选择初始的小数位定点位宽和整数位定点位宽。例如,可以选择小数位点占3/4位宽,整数位(含符号位)点占1/4位宽。
步骤四:将小数部分和整数部分进行二进制转换,把浮点数转化为对应长度的二进制定点。
采用二进制补码的方式表示,最高位为符号位。本实施例以16bit位宽,8位小数位,7位整数位,1位符号位为例说明。
例如:十进制浮点数转为当前定点的二进制补码:
正数:将十进制的正数转换为二进制。分为整数部分和小数部分分别进行转换。其整数部分除以2,逆向取余数。
如,将浮点数12.67转换为二进制:
12/6=6…0
6/2=3…0
3/2=1…1
1/2=0…1
7位整数位,所以是0001100
小数部分乘2正向取整数部分
0.67x2=1.34
0.34x2=0.68
0.68x2=1.36
0.36x2=0.72
0.72x2=1.44
0.44x2=0.88
0.88x2=1.76
0.76x2=1.52
8位小数位为10101011
另有1位符号位,正数为0,所以结果是0000110010101011
负数:将十进制数的负数转换为二进制。先按正数的方法转化为二进制,再取反加1,高位补符号位1。
例如-12.67,其有效值部分上面转化的结果为000_1100_1010_1011,取反加1:
111_0011_0101_0101,高位补符号位得到1111_0011_0101_0101
步骤五:把转换后的定点格式数据作为输入,用于神经网络的建模和计算,进行神经网络训练,记录当前的训练的整体定点位宽,小数位,整数位,训练测试精度记录训练结果;其中,神经网络训练采用的训练样本为灰度图像样本。
步骤五:把转换后的定点格式数据作为输入,用于神经网络的建模和计算,进行神经网络训练,并记录训练结果。
例如:Y’= wx + b,其中,w是权重,x是输入的定点格式数据,b是偏置bias。位宽都是16bit; Y’是32bit。
Y’还需要经过饱和激活函数(如SRelu函数)才能作为下一级神经网络的输入。激活函数如下图所示。Y’低8位直接截位,剩下的二进制数饱和到Ysat得到Y, Y仍然是16bit。
步骤六:记录训练测试结果。
步骤七六:重复步骤二至六五,直到找到合适的整体定点位宽、小数位宽、整数位宽作为最终的神经网络定点化架构。
数据位宽的选择是一个迭代仿真训练的过程。根据测试精度和项目所期望的精度判断向上还是向下进行迭代。如果精度完全满足要求,则可以尝试减小整体定点位宽,如采用12bit或8bit;如果精度不够,可以增加到24bit、32bit,逐步往上增加。可以微调小数位宽和整数位宽的比例。
当精度优先,从大的位宽向小的位宽逐步减少,如采用12bit或8bit;如果精度不够,可以增加到24bit、32bit,逐步往上增加。在满足精度要求的前提下,选择一个最小的位宽。当功耗及成本优先(例如一些嵌入式应用),则从小的位宽向大的位宽逐步增加,在功耗及成本满足的前提下,选择一个最大的数据位宽。
下面以卷积神经网络LeNet结构为例,对上述过程进行举例说明。
第一步:设计神经网络框架,选择饱和激活函数作为神经网络激活函数。
模型输入为32x32灰度图像,第一层为6个5x5卷积核,不扩展边界;第四层为2x2的最大值池化层,步进为2,第五层为展平层,并全连接120个节点;第六层为全连接层,84个节点;第七层为全连接softmax层,输出结果。
每一个卷积层包含一个激活层,该激活层使用饱和激活函数,如SRelu函数(saturation ReLu)进行激活。
第二步:选择整体定点位宽。
作为迭代的一个环节,整体定点位宽可以从16bit开始进行迭代计算。
第三步:确定初始的小数部分位宽和整数部分位宽。
作为迭代的一个环节,初始可以选择小数位点占3/4位宽比例,整数位(含符号位)占1/4位宽比例。
第四步:在神经网络中加入进制转换,以二进制定点数进行运算。
在神经网络拓扑结构中加入进制转换的代码,把浮点数转化为对应长度的二进制定点,以二进制定点数进行运算。
第五步:把转换后的定点格式数据作为输入,用于神经网络的建模和计算,进行神经网络训练。
采用SDG(随机梯度下降)或者类似的误差反向传播算法,交叉熵或者类似的损失函数,进行神经网络训练及测试。
步骤六:记录训练测试结果。
记录当前的训练的整体定点位宽,小数位,整数位,训练测试精度。
根据测试精度和项目所期望的精度判断向上还是向下进行迭代。如果精度完全满足要求,则可以尝试减小整体定点位宽,如采用12bit或8bit;如果精度不够,可以增加到24bit,32bit,逐步往上增加。
可以微调小数位宽和整数位宽的比例。
步骤七:重复步骤二至六,直到找到合适的整体定点位宽、小数位宽、整数位宽作为最终的神经网络定点化架构。
以上所述的仅为本发明的优选实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在不脱离本发明创造构思的前提下,还可做出若干变形和改进,都应涵盖在本发明的保护范围之内。

Claims (7)

1.一种全定点化神经网络的设计方法,其特征在于,包括如下步骤:
步骤一:设计神经网络框架,选择一种饱和激活函数作为神经网络激活函数;其中,饱和激活函数为SRelu;
步骤二:根据神经网络的应用场景选择数据初始的整体定点位宽;
步骤三:根据精度要求及神经网络的数据特征,确定初始的小数部分位宽和初始的整数部分位宽;
步骤四:将小数部分和整数部分进行二进制转换,把浮点数转化为对应长度的二进制定点格式数据;
步骤五:把转换后的定点格式数据作为输入,用于神经网络的建模和计算,进行神经网络训练,记录当前的训练的整体定点位宽,小数位,整数位,训练测试精度记录训练结果;其中,神经网络训练采用的训练样本为灰度图像样本;
步骤六:重复步骤二至五,直到找到满足需求的整体定点位宽、小数位宽、整数位宽作为最终的神经网络定点化架构;
GPU基于所述最终的神经网络定点化架构对灰度图像进行处理。
2.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤二中,整体定点位宽为8bit~128bit。
3.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤三中,初始时,小数部分位宽占整体定点位宽的3/4,整数部分位宽占整体定点位宽的1/4。
4.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤五中,把转换后的定点格式数据作为输入所计算得到的结果经过一个饱和激活函数进行激活,然后作为下一级神经网络的输入。
5.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤六中,利用迭代仿真训练选择整体定点位宽,根据测试精度和项目所期望的精度判断对向上还是向下进行迭代:当精度优先,从大的位宽向小的位宽逐步减少;在满足精度要求的前提下,选择一个最小的位宽;当功耗及成本优先,则从小的位宽向大的位宽逐步增加,在功耗及成本满足的前提下,选择一个最大的数据位宽。
6.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤五中,在神经网络拓扑结构中加入进制转换的代码,把浮点数转化为对应长度的二进制定点,以二进制定点数进行运算。
7.如权利要求1所述的全定点化神经网络的设计方法,其特征在于,步骤五中,采用误差反向传播算法进行神经网络训练。
CN201811622880.0A 2018-12-28 2018-12-28 一种全定点化神经网络的设计方法 Active CN109670582B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811622880.0A CN109670582B (zh) 2018-12-28 2018-12-28 一种全定点化神经网络的设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811622880.0A CN109670582B (zh) 2018-12-28 2018-12-28 一种全定点化神经网络的设计方法

Publications (2)

Publication Number Publication Date
CN109670582A CN109670582A (zh) 2019-04-23
CN109670582B true CN109670582B (zh) 2021-05-07

Family

ID=66146528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811622880.0A Active CN109670582B (zh) 2018-12-28 2018-12-28 一种全定点化神经网络的设计方法

Country Status (1)

Country Link
CN (1) CN109670582B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108345940B (zh) * 2018-02-05 2021-09-24 深圳市易成自动驾驶技术有限公司 数据处理方法、装置及计算机可读存储介质
CN110888623B (zh) * 2019-11-25 2021-11-23 集美大学 数据转换方法、乘法器、加法器、终端设备及存储介质
CN113298244B (zh) * 2021-04-21 2023-11-24 上海安路信息科技股份有限公司 目标检测中神经网络后处理实现方法、装置、终端及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109934331B (zh) * 2016-04-29 2020-06-19 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
US10019231B2 (en) * 2016-08-22 2018-07-10 Arm Limited Apparatus and method for fixed point to floating point conversion and negative power of two detector
CN108345939B (zh) * 2017-01-25 2022-05-24 微软技术许可有限责任公司 基于定点运算的神经网络
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
CN107688849B (zh) * 2017-07-28 2021-04-13 赛灵思电子科技(北京)有限公司 一种动态策略定点化训练方法及装置
CN108389178A (zh) * 2018-01-11 2018-08-10 上海交通大学 基于卷积神经网络的肺部ct预处理方法及***

Also Published As

Publication number Publication date
CN109670582A (zh) 2019-04-23

Similar Documents

Publication Publication Date Title
CN109508784B (zh) 一种神经网络激活函数的设计方法
CN107977704B (zh) 权重数据存储方法和基于该方法的神经网络处理器
CN107844826B (zh) 神经网络处理单元及包含该处理单元的处理***
CN107862374B (zh) 基于流水线的神经网络处理***和处理方法
CN109670582B (zh) 一种全定点化神经网络的设计方法
CN107818367B (zh) 用于神经网络的处理***和处理方法
CN107944545B (zh) 应用于神经网络的计算方法及计算装置
US20180018555A1 (en) System and method for building artificial neural network architectures
CN107766292B (zh) 一种神经网络处理方法及处理***
CN110097172B (zh) 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置
CN112529166A (zh) 融合神经元模型、神经网络结构及训练、推理方法、存储介质和设备
CN112598121A (zh) 一种面向深度学习编译器的高效算子优化方法
CN111814973B (zh) 一种适用于神经常微分方程网络计算的存内计算***
CN108647184B (zh) 一种动态比特位卷积乘法实现方法
CN113516133B (zh) 一种多模态图像分类方法及***
CN108171328A (zh) 一种卷积运算方法和基于该方法的神经网络处理器
KR102396447B1 (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
Abdelsalam et al. An efficient FPGA-based overlay inference architecture for fully connected DNNs
CN108985449B (zh) 一种对卷积神经网络处理器的控制方法及装置
KR0170505B1 (ko) 다층퍼셉트론 신경회로망의 n비트 데이타 표현에 의한 학습방법
CN115017178A (zh) 数据到文本生成模型的训练方法和装置
CN115664899A (zh) 一种基于图神经网络的信道解码方法及***
CN113962371B (zh) 一种基于类脑计算平台的图像识别方法及***
CN110222816B (zh) 深度学习模型的建立方法、图像处理方法及装置
Verma et al. A" Network Pruning Network''Approach to Deep Model Compression

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Chen Jingyu

Inventor after: Zhang Zhixing

Inventor after: Liu Xiangkai

Inventor before: Zhen Degen

Inventor before: Zhang Zhixing

Inventor before: Liu Xiangkai

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant