一种卷积计算方法及卷积运算电路
技术领域
本申请属于光芯片技术领域,具体涉及一种卷积计算方法及卷积运算电路。
背景技术
现有人工智能计算方面,主要是采用图形处理器(Graphics Processing Unit,GPU)、中央处理器(Central Processing Unit,CPU)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或专用集成电路(Application Specific IntegratedCircuit,ASIC)等传统电子数字处理芯片或者器件来进行卷积计算。这些方式都是对数字信号进行处理,使用这些硬件结构实现的运算速度和电源效率仍受电子时钟速率和欧姆损耗的限制,使得以深度学习为主的计算算力遭遇到瓶颈。
鉴于某些特定的光子芯片(光学器件)能够实现矩阵乘法,由于光子神经网络芯片相较于传统电子数字处理芯片或者器件来说,在计算效率以及功耗方面有巨大优势。然而目前还没有如何利用该类光子芯片进行卷积运算的方法。
发明内容
鉴于此,本申请实施例在于提供一种卷积计算方法及卷积运算电路,以改善现有卷积计算方式存在的计算效率不高和功耗大的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种卷积计算方法,应用于卷积运算电路,所述卷积运算电路包括:数字芯片、数模转换器、模数转换器和光子神经网络芯片,所述光子神经网络芯片中固化有用于卷积计算的卷积核;所述方法包括:所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片,其中,所述待计算子矩阵为根据所述卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵;所述光子神经网络芯片将预置的所述卷积核的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后输出。本申请实施例中,通过充分利用光子神经网络芯片能够实现矩阵乘法的特性,将光子神经网络芯片实现的矩阵乘法有机结合到卷积计算中来,利用光子神经网络芯片的高性能和高能效的矩阵计算能力来完成卷积计算中的线性计算部分,以提高卷积运算的速度和降低功耗,同时通过将用于卷积计算的卷积核固化在光子神经网络芯片中,使得在进行卷积计算时,无需将卷积核的权重转换成光信号输入至光子神经网络芯片中,可以提高卷积运算的效率。
结合第一方面实施例提供的一种可能的实施方式,所述光子神经网络芯片包括N个光子处理单元、延迟单元和光域加法器,所述N个光子处理单元中的每个光子处理单元与所述光域加法器之间串接有预定数量的所述延迟单元,所述预定数量取值为大于等于0的整数,且任意相邻的两个光子处理单元串接的延迟单元的数量相差为M;其中,N为所述卷积核的行数,M为正整数;每个光子处理单元固化有所述卷积核的一行权重,不同的光子处理单元对应不同的行;所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片,包括:所述数字芯片按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元;所述光子神经网络芯片将预置的所述卷积核的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后输出,包括:所述N个光子处理单元中的每个光子处理单元各自将对应的权重与每个所述光信号进行线性转换后输出到所述光域加法器;所述光域加法器将同一时刻接收到的光信号进行相加后,通过所述模数转换器转换后输出。本申请实施例中,通过在每个光子处理单元与光域加法器之间串接预定数量的延迟单元,使得所需的数据经过相应的延时后同时到达光域加法器,以便在光域加法器中完成加法计算,直接输出想要的计算结果,能最大化的提高卷积的计算效率,同时不需要的数据不需要存储,不用采集即可完成丢弃,能最大化的节约存储空间。
结合第一方面实施例提供的一种可能的实施方式,针对固化于每个光子处理单元的行向量,该行向量中的不同元素的权重值相等或者成比例关系。本申请实施例中,将同一行中的不同元素的权重值设置为相等或者成比例关系,使得能将输入的待计算子矩阵中的不同数值对应的光信号的相加结果放大,改善计算过程中存在的损耗问题。
结合第一方面实施例提供的一种可能的实施方式,所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片之前,所述方法还包括:所述数字芯片根据所述卷积核的大小以及所述预设步长将所述待计算矩阵拆分为多个待计算子矩阵。本申请实施例中,利用数字芯片自身根据卷积核的大小以及预设步长将待计算矩阵拆分为多个待计算子矩阵,使得在输入待处理图像数据时,可以直接输入拆分好的数据,不用进行数据的拆分,可以提高处理效率。
第二方面,本申请实施例提供了一种卷积计算方法,应用于卷积运算电路,所述卷积运算包括:数字芯片、数模转换器、模数转换器、光子神经网络芯片和电域加法器,所述光子神经网络芯片包括N个光子处理单元,其中,N为卷积核的行数,每个光子处理单元固化有卷积核的一行权重,不同的光子处理单元对应不同的行;所述方法包括:所述数字芯片按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元,其中,所述待计算子矩阵为根据所述卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵;所述N个光子处理单元中的每个光子处理单元各自将对应的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后给所述电域加法器;所述电域加法器从接收到的电信号中选择所需的电信号进行求和运算后输出。本申请实施例中,利用光子神经网络芯片中的多个光子处理单元同时对同一个待计算子矩阵进行矩阵运算,不同的光子处理单元完成不同行和列的计算,再利用电域加法器从各个光子处理单元输出的电信号中选择所需的电信号进行求和运算后,即可输出想要的计算结果,该方法不需要使用信号延迟单元,可以减少器件的使用,使得电路的整体体积可以设计的较小;同时通过将用于卷积计算的卷积核固化在光子神经网络芯片中,使得在进行卷积计算时,无需将卷积核的权重转换成光信号输入至光子神经网络芯片中,可以提高卷积运算的效率。
第三方面,本申请实施例提供了一种卷积运算电路,包括:数字芯片、数模转换器、模数转换器和光子神经网络芯片,所述光子神经网络芯片中固化有用于卷积计算的卷积核;所述数字芯片,用于依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片,其中,所述待计算子矩阵为根据所述卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵;所述光子神经网络芯片,用于将预置的所述卷积核的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后输出。
结合第三方面实施例提供的一种可能的实施方式,所述光子神经网络芯片包括N个光子处理单元、延迟单元和光域加法器,所述N个光子处理单元中的每个光子处理单元与所述光域加法器之间串接有预定数量的所述延迟单元,所述预定数量取值为大于等于0的整数,且任意相邻的两个光子处理单元串接的延迟单元的数量相差为M;其中,N为所述卷积核的行数,M为正整数;每个光子处理单元固化有所述卷积核的一行权重,不同的光子处理单元对应不同的行;所述数字芯片,用于按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元;所述N个光子处理单元中的每个光子处理单元,各自用于将对应的权重与每个所述光信号进行线性转换后输出到所述光域加法器;所述光域加法器,用于将同一时刻接收到的光信号进行相加后,通过所述模数转换器转换后输出。
结合第三方面实施例提供的一种可能的实施方式,针对固化于每个光子处理单元的行向量,该行向量中的不同元素的权重值相等或者成比例关系。
结合第三方面实施例提供的一种可能的实施方式,所述数字芯片,在依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片之前,还用于根据所述卷积核的大小以及所述预设步长将所述待计算矩阵拆分为多个待计算子矩阵。
第四方面,本申请实施例提供了一种卷积运算电路,包括:数字芯片、数模转换器、模数转换器、光子神经网络芯片和电域加法器,所述光子神经网络芯片包括N个光子处理单元,其中,N为卷积核的行数,每个光子处理单元固化有卷积核的一行权重,不同的光子处理单元对应不同的行;所述数字芯片,用于按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元,其中,所述待计算子矩阵为根据所述卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵;所述N个光子处理单元中的每个光子处理单元,各自用于将对应的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后给所述电域加法器;所述电域加法器,用于从接收到的电信号中选择所需的电信号进行求和运算后输出。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种卷积运算电路的结构示意图。
图2示出了本申请实施例提供的图1中的光子神经网络芯片的结构示意图。
图3示出了本申请实施例提供的一种基于图2中的光子神经网络芯片实现一次卷积计算的过程示意图。
图4示出了本申请实施例提供的又一种卷积运算电路的结构示意图。
图5示出了本申请实施例提供的一种卷积计算方法的流程示意图。
图6示出了本申请实施例提供的又一种卷积计算方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
鉴于光子神经网络芯片相较于传统电子数字处理芯片或者器件在实现矩阵乘法方面的巨大优势,本申请提供了一种卷积运算电路,以充分利用光子神经网络芯片能够实现矩阵乘法的特性,将光子神经网络芯片实现的矩阵乘法有机结合到卷积计算中来。如图1所示,该卷积运算电路包括:数字芯片、数模转换器、模数转换器和光子神经网络芯片。
该卷积运算电路充分将光子与电子的优势组合,形成光电异构架构,以提高卷积运算的速度和降低功耗。其中,光子神经网络芯片主要用于完成卷积计算中的线性计算部分,而数字芯片主要用于完成逻辑控制功能。由于目前主流的人工智能(ArtificialIntelligence;AI)计算绝大部分(例如90%以上)的运算是线性运算,算力主要体现在线性的卷积运算上,而卷积运算最后都可以转换成矩阵运算,因此,本申请利用光子神经网络芯片的高性能和高能效的矩阵计算能力来完成卷积计算中的线性计算部分,以提高AI计算能力。
其中,光子神经网络芯片(例如,可以是马赫曾德尔干涉仪)中固化有用于卷积计算的卷积核,使得在进行卷积计算时,不用额外输入卷积核的权重。固化于光子神经网络芯片中的卷积核的权重,可以是在光子神经网络芯片出厂设置时,便设定好了的,后续在使用该芯片时,其权重值不变。当然,也可以在后续的使用过程中,根据需要来调节其权重值,如将所需的卷积核中的权重通过热调的方式来改变其权重值。
在进行卷积计算中的线性部分计算时,数字芯片用于依次将待计算子矩阵中的数值通过数模转换器转换为光信号发送给光子神经网络芯片。光子神经网络芯片用于将预置的卷积核的权重与每个光信号进行线性转换,并将线性转换后的光信号通过模数转换器转换后输出给数字芯片。对于数字芯片来说,该数字芯片还用于对接收到的光子神经网络芯片线性处理后的数据进行函数激活、池化等非线性处理。
其中,数模转换器和模数转换器负责卷积计算数据的信号转换,即从数字芯片(光子神经网络芯片)流向光子神经网络芯片(数字芯片)之间的信号需要在模拟光信号和数字电信号之间相互转换。
上述的待计算子矩阵为根据卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵。作为一种实施方式,可以是数字芯片自己来完成待计算子矩阵的提取,例如,数字芯片在依次将待计算子矩阵中的数值通过数模转换器转换为光信号发送给光子神经网络芯片之前,还用于根据卷积核的大小以及预设步长将待计算矩阵拆分为多个待计算子矩阵。该过程可以是,边拆分边将拆分得到的待计算子矩阵中的数值通过数模转换器转换为光信号发送给光子神经网络芯片,也可以是在拆分完所有的待计算子矩阵后,再依次将各个待计算子矩阵中的数值通过数模转换器转换为光信号发送给光子神经网络芯片。
当然,可以理解的是,上述的待计算子矩阵的拆分也可以不是由数字芯片自己来完成的,例如,通用处理器在向数字芯片输入待处理图像数据时,输入的就是已经拆分好的数据,进一步地,通用处理器基于PCIE(Peripheral Component Interconnect Express)总线、AXI(Advanced eXtensible Interface)总线等总线向数字芯片依次输入各个待计算子矩阵中的数值,数字芯片依次将接收到的各个待计算子矩阵中的数值通过数模转换器转换为光信号发送给光子神经网络芯片。此时,数字芯片可以基于PCIE总线、AXI总线等总线完成与通用处理器之间的信息交互,如待处理图像数据可以通过PCIE口进入到数字芯片中。当然,待处理图像数据也可以是事先存储在数字芯片内置或外置的存储器中。
其中,上述的数字芯片可能是一种集成电路芯片,具有信号的处理能力。上述的集成电路芯片可以是中央处理器(Central Processing Unit, CPU)、图形处理器(GraphicsProcessing Unit,GPU)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
为了便于理解,以图像为9*9(也即待计算矩阵为9*9),卷积核为3*3为例说明具体
执行过程。待计算矩阵为X=
,卷积核K=
。那么在第一次卷
积过程中,待计算子矩阵为X1=
=[x1,x2,x3],卷积核为K=[k1,k2,k3],
其中,x1,x2,x3都是3*1的列向量,k1,k2,k3都是1*3的行向量。卷积的结果为Z1=k1*x1+k2*
x2+k3*x3。假设预设步长(也即将卷积核整体在待计算矩阵中向右或向下滑动的步长)为1,
则在第二次卷积过程中,将卷积核整体在待计算矩阵中向右滑动1步,提取出来的待计算子
矩阵X2=
=[x2,x3,x4],其中,x2,x3,x4都是3*1的列向量,则卷积的结果
为Z2=k1*x2+k2*x3+k3*x4,以此类推,可以得到Z3=k1*x3+k2*x4+k3*x5,……,Z7=k1*x7+
k2*x8+k3*x9。
其中,上述的
,
。k1=[K
11,K
12,K
13],k2=[K
21,
K
22,K
23],k3=[K
31,K
32,K
33]。
在完成前三行(第一行到第三行)这一层的图像的卷积计算后,接下来向下滑动1步(由于预设步长为1),对第二行到第四行(共三行)这一层的图像进行卷积计算,此时,根据卷积核的大小以及预设步长从待计算矩阵中提取出的待计算子矩阵依次为[d1,d2,d3]、[d2,d3,d4]、[d3,d4,d5]、[d4,d5,d6] 、[d5,d6,d7] 、[d6,d7,d8]、[d7,d8,d9],对应的卷积的结果为:
Z1=k1*d1+k2*d2+k3*d3;
Z2=k1*d2+k2*d3+k3*d4;
Z3=k1*d3+k2*d4+k3*d5;
……
Z7=k1*d7+k2*d8+k3*d9;
在完成第二行到第四行(共三行)这一层的图像的卷积计算后,依次对第三行到第五行(共三行)、第四行到第六行(共三行)、第五行到第七行(共三行)、第六行到第八行(共三行)、第七行到第九行(共三行)这些层的图像进行卷积计算,可以得到不同层卷积计算后的所有Z1-Z7,共7组Z1-Z7。其中,所有的卷积结果值(Z1-Z7)通过模数转换器转换为数字信号后发送给数字芯片,进行后续处理。后续处理可以为常规深度学习卷积层、池化层等处理。
其中,不同的步长,计算的结果不同;如果步长为2,对每一层的图像进行卷积计算,只能得到Z1、Z3、Z5、Z7四个数,以对前三行(共三行)这一层的图像进行卷积计算为例,此时,根据卷积核的大小(3*3)以及预设步长(2)从待计算矩阵(9*9)中提取出的待计算子矩阵依次为[x1,x2,x3]、[x3,x4,x5]、[x5,x6,x7] 、[x7,x8,x9]。同样在向下滑动时,需要往下移两个步长,这样只能得到4组Z1、Z3、Z5、Z7。
其中,作为一种实施方式,针对固化于每个光子处理单元的行向量,该行向量中的不同元素的权重值相等或者成比例关系,其中,该权重值是在进行卷积计算之前就已经固化在光子处理单元中的。例如,若K11= K12= K13=P,则不论K21、K22、K23、K31、K32、K33为何值,那么对于x1*k1来说,都有x1*k1=P(X11+X21+X31),即实现将输入的三个光信号的相加和(也即相加结果)放大P倍。当P为1时,即实现相加计算。又例如,若K21=m* K22=n K23,则不论K11、K12、K13、K31、K32、K33为何值,那么就有x1*k2=(1+1/m+1/n)*(X11+X21+X31),即实现将输入的三个光信号的相加和放大(1+1/m+1/n)倍。其中,上述的两种情况也可同时存在,例如,k1中的不同元素的权重值相等,k2中的不同元素的权重值成比例关系,k3中的不同元素的权重值相等或者成比例关系。
其中,需要说明的是,在待计算矩阵中按照预设步长滑动卷积核的过程中,若卷积核的部分边界超出待计算矩阵的边界,此时可以对待计算矩阵的边界(超出的部分)进行边界填充。其中,填充的方式有多种,可以是补零填充,也可以是边界复制填充,也还可以是镜像填充,也还可以是块填充,该部分内容为本领域技术人员所熟知的内容,在此不再赘述。
作为一种实施方式,上述的光子神经网络芯片包括N个光子处理单元、延迟单元和光域加法器。N个光子处理单元中的每个光子处理单元与光域加法器之间串接有预定数量的延迟单元,该预定数量取值为大于等于0的整数,且任意相邻的两个光子处理单元串接的延迟单元的数量相差为M;其中,N为卷积核的行数,M为正整数。每个光子处理单元固化有卷积核的一行权重,不同的光子处理单元对应不同的行,如第一个光子处理单元中固化的行向量为k1,第二个光子处理单元中固化的行向量为k2,第三个光子处理单元中固化的行向量为k3,……。
此时,数字芯片用于按照列顺序依次将待计算子矩阵中同一列的数值通过数模转换器转换为光信号分别发送给N个光子处理单元。N个光子处理单元中的每个光子处理单元,各自用于将对应的权重与每个光信号进行线性转换后输出到光域加法器。光域加法器用于将同一时刻接收到的光信号进行相加后,通过模数转换器转换后输出数字芯片。
为了便于理解,以图2所示的光子神经网络芯片结构为例进行说明,图2示出了包括4个光子处理单元的情形,第一个光子单元与光域加法器之间串接有3个延迟单元,第二个光子处理单元与光域加法器之间串接有2个延迟单元,第三个光子处理单元与光域加法器之间串接有1个延迟单元,第四个计算光子单元与光域加法器之间串接有0个延迟单元,也即直接连接。需要说明的是,上述示例的是任意相邻的两个光子处理单元串接的延迟单元的数量相差为1的情形,可以理解的是,任意相邻的两个光子处理单元串接的延迟单元的数量相差也可以为不为1的其他正整数如2、3等。仍然以上述的卷积核为例,此时任意选择相邻的三个光子处理单元来完成卷积计算。
其中,Optical Matrix为光学光子处理单元,可以由特定的光学器件构成(例如,可以是马赫曾德尔干涉仪)能够实现将两种光信号矩阵相乘,该部分内容为本领域技术人员所熟知的内容,在此不再赘述。k值代表权重,可由外置电学芯片(如上述的数字芯片)控制具体数值大小。以待计算子矩阵为X1=[x1,x2,x3]为例,例如第一个光子处理单元(图3中的Optical Matrix1)对应的权重为k1,第二个光子处理单元(图3中的Optical Matrix2)对应的权重为k2,第三个光子处理单元(图3中的Optical Matrix3)对应的权重为k3。数字芯片按照列顺序依次将待计算子矩阵中同一列的数值通过数模转换器转换为光信号分别发送给3个光子处理单元,也即,将x1通过数模转换器转换为光信号分别发送给OpticalMatrix1、Optical Matrix2、Optical Matrix3,此时Optical Matrix1将对应的权重k1和光信号进行线性转换后输出k1*x1,同理,Optical Matrix2输出k2*x1,Optical Matrix3输出k3*x1;一个周期后,又将x2通过数模转换器转换为光信号分别发送给Optical Matrix1、Optical Matrix2、Optical Matrix3,此时,Optical Matrix1输出k1*x2,同理,OpticalMatrix2输出k2*x2,Optical Matrix3输出k3*x2;一个周期后,又将x3通过数模转换器转换为光信号分别发送给Optical Matrix1、Optical Matrix2、Optical Matrix3,此时,Optical Matrix1输出k1*x3,同理,Optical Matrix2输出k2*x3,Optical Matrix3输出k3*x3。由于Optical Matrix1后面串接了两个延时单元,使得Optical Matrix1输出的值会被延时两个单位后到达光域加法器;Optical Matrix2后面串接了一个延时单元,使得Optical Matrix2输出的值会被延时一个单位后到达光域加法器,Optical Matrix3输出的值不会被延时,这样使得k1*x1,k2*x2,k3*x3可同时到达光域加法器,以便于光域加法器将同一时刻接收到的光信号进行相加,便可得到所需要的数值Z1= k1*x1+k2*x2+k3*x3,并将得到的Z1通过模数转换器转换后输出数字芯片,如过程示意图如图3所示。
在完成X1=[x1,x2,x3]的卷积计算后,对待计算子矩阵X2=[x2,x3,x4]进行计算,按照上述的方法,依次将x2,x3,x4通过数模转换器转换为光信号分别发送给OpticalMatrix1、Optical Matrix2、Optical Matrix3,如此可以得到Z2,依次类推,可以完成不同层的卷积计算后的所有Z1-Z7,最终得到卷积计算结果。不需要的数据不采集即可,直接完成丢弃,可以节约存储空间。同时,光子神经网络芯片输出的数据均为需要的数据,数字芯片在接收到该数据后,可以直接进行后续处理,效率更高。为了便于理解,结合表1进行说明。
表1
| 周期1 |
周期2 |
周期3 |
周期4 |
周期5 |
周期6 |
周期7 |
周期8 |
周期9 |
| k1*x1 |
k1*x2 |
k1*x3 |
k1*x4 |
k1*x5 |
k1*x6 |
k1*x7 |
k1*x8 |
k1*x9 |
| k2*x1 |
k2*x2 |
k2*x3 |
k2*x4 |
k2*x5 |
k2*x6 |
k2*x7 |
k2*x8 |
k2*x9 |
| k3*x1 |
K3*x2 |
K3*x3 |
K3*x4 |
K3*x5 |
K3*x6 |
K3*x7 |
K3*x8 |
K3*x9 |
其中,将表中相邻的三列作为一单元来看,处于每个单元斜对角线的数据即为所需的数据,Z1= k1*x1+k2*x2+k3*x3;Z2=k1*x2+k2*x3+k3*x4,…,Z7=k1*x7+k2*x8+k3*x9。
作为又一种实施方式,当上述的光子神经网络芯片仅包括N个光子处理单元时,对应的该卷积运算电路可以包括电域加法器。此时,该光子神经网络芯片中的每个光子处理单元各自对将对应的权重与每个光信号进行线性转换,并将线性转换后的光信号通过模数转换器转换后输出,也即,此时,光子神经网络芯片输出的是如表1中的数值,进一步地,在Cycle1时刻,光子神经网络芯片输出的是k1*x1,k2*x1,k3*x1;在Cycle2时刻,光子神经网络芯片输出的是k1*x2,k2*x2,k3*x2,也即是按照表1中的列顺序输出的。对应的电域加法器用于将从接收到的电信号中选择所需的电信号进行求和运算后输出给数字芯片,也即将表中相邻的三列作为一单元来看,电域加法器选择处于每个单元斜对角线的数据进行求和运算,即可得到需要的数据。此时的卷积运算电路的结构示意图可以参阅图4。
其中,需要说明的是,在该种实施方式下,也即当上述的光子神经网络芯片仅包括N个光子处理单元时,该卷积运算电路也可以不包括电域加法器,此时,该光子神经网络芯片中的每个光子处理单元各自将对应的权重与每个光信号进行线性转换,并将线性转换后的光信号通过模数转换器转换后直接输出给数字芯片,由数字芯片自己来完成加法运算(如利用软件实现加法运算)。
请参阅图5,为本发明实施例提供的一种应用于上述图1-图2所示的卷积运算电路的卷积计算方法。该方法包括:
步骤S101:所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片。
步骤S102:所述光子神经网络芯片将将预置的所述卷积核的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后输出。
当所述光子神经网络芯片包括N个光子处理单元、延迟单元和光域加法器,所述N个光子处理单元中的每个光子处理单元与所述光域加法器之间串接有预定数量的所述延迟单元,所述预定数量取值为大于等于0的整数,且任意相邻的两个光子处理单元串接的延迟单元的数量相差为M;其中,所述N为所述卷积核的行数,M为正整数。每个光子处理单元固化有所述卷积核的一行权重,不同的光子处理单元对应不同的行。
所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片的过程为:所述数字芯片按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元。
所述光子神经网络芯片将预置的所述卷积核的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后输出的过程为:所述N个光子处理单元中的每个光子处理单元各自将对应的权重与每个所述光信号进行线性转换后输出到所述光域加法器;所述光域加法器将同一时刻接收到的光信号进行相加后,通过所述模数转换器转换后输出。
可选地,针对固化于每个光子处理单元的行向量,该行向量中的不同元素的权重值相等或者成比例关系。例如,若K11= K12= K13=P,则不论K21、K22、K23、K31、K32、K33为何值,那么对于x1*k1来说,都有x1*k1=P(X11+X21+X31),即实现将输入的三个光信号的相加和放大P倍。当P为1时,即实现相加计算。又例如,若K21=m* K22=n K23,则不论K11、K12、K13、K31、K32、K33为何值,那么就有x1*k2=(1+1/m+1/n)*(X11+X21+X31),即实现将输入的三个光信号的相加和放大(1+1/m+1/n)倍。
可选地,所述数字芯片依次将待计算子矩阵中的数值通过所述数模转换器转换为光信号发送给所述光子神经网络芯片之前,所述方法还包括:所述数字芯片根据所述卷积核的大小以及所述预设步长将所述待计算矩阵拆分为多个待计算子矩阵。
本发明实施例所提供的卷积运算方法,其实现原理及产生的技术效果和前述装置实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述装置实施例中相应内容。
请参阅图6,为本发明实施例提供的一种应用于上述图4所示的卷积运算电路的卷积计算方法。该方法包括:
步骤S201:所述数字芯片按照列顺序依次将待计算子矩阵中同一列的数值通过所述数模转换器转换为光信号分别发送给所述N个光子处理单元。
其中,N为卷积核的行数,每个光子处理单元固化有卷积核的一行权重,不同的光子处理单元对应不同的行。其中,所述待计算子矩阵为根据所述卷积核的大小以及预设步长从待计算矩阵中提取出的子矩阵。
步骤S202:所述N个光子处理单元中的每个光子处理单元各自将对应的权重与每个所述光信号进行线性转换,并将线性转换后的光信号通过所述模数转换器转换后给所述电域加法器。
步骤S203:所述电域加法器从接收到的电信号中选择所需的电信号进行求和运算后输出。
本发明实施例所提供的卷积运算方法,其实现原理及产生的技术效果和前述装置实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述装置实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。