本申请涉及神经网络技术领域,尤其涉及一种用于控制卷积神经网络进行数据处理的方法和装置。
背景技术:
人工智能是计算机学科中的一个分支学科,早在二十世纪五十年代时就被提出和确立了。如果某种机械的运行结果可以展现出与人类的智商相同或者是无法分辨的智慧,则认为这机械有了思维能力,能够进行思考。从实用角度讲,ai的目标是要让计算机装置能够自己去做完那些需要依靠人类的头脑才能完成的工作。深度学习是目前机器学习学科发展最蓬勃的分支,也是整个人工智能领域中应用前景最为广阔的技术。
卷积神经网络是深度学习中使用最为广泛的一类神经网络,占据当前技术的绝对主流。当前,卷积神经网络已经被成功的应用到图像处理、视频处理、自然语言处理等多种技术中。
fpga是一种半定制电路,设计师可以通过配置开关状态来达到想要的逻辑操作。fpga的逻辑部分主要由可配置逻辑块和用于接口的输入/输出块构成。fpga具有高性能并行计算和超低功耗的优点,所以在fpga上实现深度学习算法模型是该领域的必然发展方向。
由于卷积计算占了90%的计算时间,所以卷积计算的性能会直接影响到模型算法实现的性能。然而,fpga的研发是使用底层硬件语言(例如verilog),它非常适合稳定的算法模型,但是现在的深度学习算法模型不稳定,还在优化中,这使得在fpga上实现卷积计算具有很大的难度。
综上所述,需要提供一种能够在fpga上进行稳定的卷积计算的方法和装置。
技术实现要素:
为解决以上问题,本申请提出了一种用于控制卷积神经网络进行数据处理的方法和装置。
一方面,本申请提出一种用于控制卷积神经网络进行数据处理的方法,包括:
s1,第一模块根据接收到的数据生成第一控制信号和输入数据,发送至第二模块;
s2,第二模块根据所述第一控制信号和输入数据,加载处理单元;
s3,第二模块使用加载的所述处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块;
s4,第一模块根据所述处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,则返回s1。
优选地,所述第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
优选地,所述处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元。
优选地,所述第二模块使用加载的所述处理单元处理输入数据,包括:
输入数据处理单元对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
或滑动处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
或池化处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理。
优选地,所述模块计数器在滑动处理单元中,用于对所述输入数据进行定位以及对处理过程中的过程信息进行记录。
优选地,所述输入数据处理单元用于对待处理数据进行镜像翻转和/或归一裁剪。
优选地,所述输入数据,包括:待处理数据和与处理单元卷对应的卷积神经网络的数据。
第二方面,本申请提出一种用于控制卷积神经网络进行数据处理的装置,包括:
第一模块,用于根据接收到的数据生成第一控制信号和输入数据,发送至第二模块,根据所述处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,则继续处理;
第二模块,用于根据所述第一控制信号和输入数据,加载处理单元,使用加载的所述处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块。
优选地,所述第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
优选地,所述处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元;
所述输入数据处理单元对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
所述滑动处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
所述池化处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理。
本申请的优点在于:通过在fpga中划分出两个模块,第二模块根据第一模块生成的第一控制信号和输入数据,加载处理单元,处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块,第一模块根据处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,继续进行数据处理,能够使第二模块在第一模块的控制下进行稳定的卷积计算。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:
图1是本申请提供的一种用于控制卷积神经网络进行数据处理的方法的步骤示意图;
图2是本申请提供的一种用于控制卷积神经网络进行数据处理的方法的卷积神经网络的示意图;
图3是本申请提供的一种用于控制卷积神经网络进行数据处理的装置的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
根据本申请的实施方式,提出一种用于控制卷积神经网络进行数据处理的方法,如图1所示,包括:
s1,第一模块根据接收到的数据生成第一控制信号和输入数据,发送至第二模块;
s2,第二模块根据第一控制信号和输入数据,加载处理单元;
s3,第二模块使用加载的处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块;
s4,第一模块根据处理后的数据和第二控制信号,判断处理后的数据是否为输出数据,若是,则输出输出数据,若否,则返回s1。
第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元等。
第二模块使用加载的处理单元处理输入数据,包括:
输入数据处理单元对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理;
或滑动处理单元解析控制信号对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理;
或池化处理单元解析控制信号对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理。
模块计数器在滑动处理单元中,用于对输入数据进行定位以及对处理过程中的过程信息进行记录。
处理单元在完成对应的处理后,将需要记录的信息和定位信息发送至模块计数器。
第一模块以及第二模块中的各初始化控制信号以及各处理单元的参数由上位机生成,并发送至第一模块和第二模块中。
输入数据处理单元用于对待处理数据进行扩充、镜像翻转和/或归一裁剪。
过程信息包括如进行到了第几层卷积中的第几次卷积等的信息。
输入数据,包括:待处理数据和与处理单元卷对应的卷积神经网络的数据。
数据标志控制(data_valid)信号用于表示同一时钟的数据是有效,即表示当前传输的数据为新的数据,以免与之前的数据混合,通过数据标志控制信号,能够提取正确的数据。
行控制(row_last)信号表示从下一时种周期开始的数据属于下一行,用于卷积的参数定位,通过行控制信号,能够找到下一行的起始位置,从而对需要行信息的处理单元进行控制。
通道控制(column_last)信号表示从下一时种周期开始的数据属于下一通道,用于卷积的参数定位,通过通道控制信号,能够找到下一通道的起始位置,从而对需要通道信息的处理单元进行控制。
完成控制(complete)信号表示完成了全部的数据传输,用于在数据都发送完成之后进行确认,通过完成控制信号,能够确定数据结束的位置,从而对需要结束信息的处理单元进行控制,进行一些复位操作。
输入数据处理单元用于对输入数据进行padding操作。
滑动处理单元用于控制卷积的步长,对输入数据进行stride操作。
池化(pool)处理单元用于对输入数据进行池化操作。
本申请的处理单元还包括其他卷积神经网络中用于对数据进行处理的处理单元。
第二模块在完成计算的同时,修改控制信号,发送至第一模块,第一模块根据第二模块发送的控制信号(第二控制信号)和数据,生成新的控制信号,发送至第二模块,从而继续驱动第二模块进行下一步计算。
本申请的实施方式能够支持所有以卷积神经网络为基础的深度学习架构,例如alexnet,vgg,inception等。
下面,对本申请实施例进行进一步说明。
第一模块为控制模块,第二模块为处理模块,用于对数据进行卷积神经网络中的如卷积、池化和全连接层的非线性计算等的处理。
如图2所示,为一个具有3个卷积层的卷积神经网络。
以在c1层进行使用第一卷积核对输入数据进行处理为例。第一模块根据接收到的数据以及要进行的处理,将与第一卷积核对应的参数通过第一控制信号发送至第二模块,同时将接收到待处理数据作为输入数据,发送至第二模块。
将待处理数据和与第一次卷积核对应的参数(与处理单元卷对应的卷积神经网络的数据),以及控制信号发送给第二模块。当数据发送完成后,第一模块发送完成控制信号至第二模块。
第二模块根据第一控制信号加载对应的处理单元以及对应的参数,由于要进行c1层的第一卷积核对输入数据进行处理,所以第二模块需要先加载输入数据处理单元,对输入数据进行padding操作,得到处理后的数据和第二控制信号(第二模块生成的控制信号)。
第二模块将处理后的数据和第二控制信号发送给第一模块,发送完成后,发送完成控制信号至第与模块。
第一模块根据处理后的数据和第二控制信号,生成第一控制信号和输入数据,发送至第二模块,控制第二模块加载滑动处理单元和对应的参数,对输入数据使用c1层的第一卷积核进行处理计算,得到处理后的数据和第二控制信号,发送至第一模块。
第一模块根据处理后的数据和第二控制信号,生成第一控制信号和输入数据,控制第二模块对输入数据使用c1层的第二卷积核进行处理。
当第二模块对输入数据完成fc7层的处理后,得到输出数据,输出。
通过与数据同时发送的控制信号,完成驱动第二模块计算的目的。同时生成新的控制信号,继续驱动下一部分的计算。
第二方面,根据本申请的实施方式,还提出一种用于控制卷积神经网络进行数据处理的装置,如图3所示,包括:
第一模块101,用于根据接收到的数据生成第一控制信号和输入数据,发送至第二模块,根据处理后的数据和第二控制信号,判断处理后的数据是否为输出数据,若是,则输出输出数据,若否,则继续处理;
第二模块102,用于根据第一控制信号和输入数据,加载处理单元,使用加载的处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块。
第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元;
输入数据处理单元对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理;
滑动处理单元解析控制信号对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理;
池化处理单元解析控制信号对输入数据进行加载,解析控制信号,根据模块计数器中的数据,对输入数据进行处理。
本申请的实施方式还包括存储模块,用于存储输入数据、需要进行处理的数据和处理后的数据。
本申请的方法中,通过在fpga中划分出两个模块,第二模块根据第一模块生成的第一控制信号和输入数据,加载处理单元,处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块,第一模块根据处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,继续进行数据处理,能够使第二模块在第一模块的控制下进行稳定的卷积计算,同时,还能够降低在fpga上实现卷积神经网络的难度,提高卷积神经网络的运行效率。本申请的实施方式支持所有以卷积神经网络为基础的深度学习架构,应用范围广。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
1.一种用于控制卷积神经网络进行数据处理的方法,其特征在于,包括:
s1,第一模块根据接收到的数据生成第一控制信号和输入数据,发送至第二模块;
s2,第二模块根据所述第一控制信号和输入数据,加载处理单元;
s3,第二模块使用加载的所述处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块;
s4,第一模块根据所述处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,则返回s1。
2.如权利要求1所述的方法,其特征在于,所述第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
3.如权利要求1所述的方法,其特征在于,所述处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元。
4.如权利要求3所述的方法,其特征在于,所述第二模块使用加载的所述处理单元处理输入数据,包括:
输入数据处理单元对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
或滑动处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
或池化处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理。
5.如权利要求4所述的方法,其特征在于,所述模块计数器在滑动处理单元中,用于对所述输入数据进行定位以及对处理过程中的过程信息进行记录。
6.如权利要求3所述的方法,其特征在于,所述输入数据处理单元用于对待处理数据进行镜像翻转和/或归一裁剪。
7.如权利要求1所述的方法,其特征在于,所述输入数据,包括:待处理数据和与处理单元卷对应的卷积神经网络的数据。
8.一种用于控制卷积神经网络进行数据处理的装置,其特征在于,包括:
第一模块,用于根据接收到的数据生成第一控制信号和输入数据,发送至第二模块,根据所述处理后的数据和第二控制信号,判断所述处理后的数据是否为输出数据,若是,则输出所述输出数据,若否,则继续处理;
第二模块,用于根据所述第一控制信号和输入数据,加载处理单元,使用加载的所述处理单元处理输入数据,得到处理后的数据和第二控制信号,发送至第一模块。
9.如权利要求8所述的装置,其特征在于,所述第一控制信号和第二控制信号,均包括:数据标志控制信号,行控制信号、通道控制信号和完成控制信号中的一种或几种。
10.如权利要求8所述的装置,其特征在于,所述处理单元,包括:输入数据处理单元、滑动处理单元和池化处理单元;
所述输入数据处理单元对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
所述滑动处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理;
所述池化处理单元解析所述控制信号对所述输入数据进行加载,解析所述控制信号,根据模块计数器中的数据,对所述输入数据进行处理。
技术总结