本申请涉及人工智能技术领域,特别是涉及一种基于resnet50网络的ai加速卡仿真测试系统及其工作方法。
背景技术:
随着人工智能在各领域的广泛应用,人民对人工智能的计算速度和精度要求越来越高。为了满足人民对计算精度和速度的需求,各大硬件厂商专门涉及ai加速卡。对于设计完成的加速卡,在进行板卡制作前需要验证其性能是否合格。因此,如何对ai加速卡进行验证,以便于提高板卡制作的成功率,是个重要技术问题。
目前对ai加速卡进行验证的方法,主要是在板卡上直接验证,通过对板卡的测试来确认是否有设计错误,然后根据验证结果反过来修订设计缺陷。
然而,目前对ai加速卡进行验证的方法中,由于直接在板卡上验证,无法有效的获取中间输出结果,如果设计缺陷导致板卡验证问题,需要大量的时间进行调试,从而导致ai加速卡的设计效率较低。
技术实现要素:
本申请提供了一种基于resnet50网络的ai加速卡仿真测试系统及其工作方法,以解决现有技术中ai加速卡的设计效率较低的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于resnet50网络的ai加速卡仿真测试系统,所述仿真测试系统包括:
卷积模块,用于根据量化后的数据,按照不同的卷积核进行卷积计算;
激活模块,用于利用relu函数进行激活操作;
池化模块,用于根据相应的下采样方法对数据进行降维;
残差模块,用于将branch分支的输入数据和残差数据进行两两加和,获取输出数据,所述branch分支用于组成res;
全连接模块,用于对输入层神经元和输出层神经元建立权重连接;
softmax模块,用于将多个神经元的输出映射到(0,1)区间内,并在(0,1)区间内利用公式
量化模块,用于对卷积计算后的int32数据进行量化,获取量化后的数据。
可选地,所述卷积模块包括:
数据获取单元,用于获取量化后的featuremap数据、weights数据、biase数据和量化参数数据;
第一判断单元,用于判断weights数据是否为7*7的卷积核;
拆分单元,用于当weights数据为7*7的卷积核时,将所述7*7的卷积核拆分成3*3的卷积核,并将第一featuremap数据拆分成第二featuremap数据,所述第一featuremap数据为所述7*7的卷积核所匹配的featuremap数据,所述第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据;
第二判断单元,用于当weights数据不为7*7的卷积核时,判断weights数据是否为3*3的卷积核;
重排序单元,用于当weights数据为3*3的卷积核时,将所述3*3的卷积核数据重排序为9*9的数据,以及将第二featuremap数据的相应区域重排序为9*9的数据;
脉动阵列计算单元,用于将所述9*9的数据进行脉动阵列计算;
第三判断单元,用于当weights数据不为3*3的卷积核时,判断weights数据是否为1*1的卷积核;
所述重排序单元,还用于当weights数据为1*1的卷积核时,将所述1*1的卷积核数据重排序为9*9的数据;
计算单元,用于对重排序后的3*3卷积核数据进行卷积计算,获取输入通道上featuremap数据,所述featuremap数据的数据格式为int32;
累加单元,用于对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
可选地,所述池化模块具体为最大值下采样池化单元或平均值下采样单元;
所述最大值下采样单元,用于选择窗口中最大值作为下采样输出结果;
所述平均值下采样单元,用于统计选择窗口中的数据,计算平均值作为下采样的输出结果。
可选地,所述量化后的数据为:int8数据,float16数据或者int4数据。
一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,所述工作方法包括:
搭建基础模块,所述基础模块包括:卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块以及量化模块;
利用所述基础模块构建branch1分枝和branch2分枝;
利用所述branch1分枝和branch2分枝组成res;
利用所述res构建resnet50网络;
利用卷积模块进行卷积计算;
采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据;
根据量化后的数据,在resnet50网络中对ai加速卡进行仿真测试。
可选地,所述利用卷积模块进行卷积计算,包括:
获取量化后的featuremap数据、weights数据、biase数据和量化参数;
判断weights数据是否为7*7的卷积核;
如果weights数据为7*7的卷积核,将所述7*7的卷积核拆分成3*3的卷积核,同时将第一featuremap数据拆分成第二featuremap数据,所述第一featuremap数据为所述7*7的卷积核所匹配的输入featuremap数据,所述第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据;
如果weights数据不为7*7的卷积核,则判断weights数据是否为3*3的卷积核;
如果weights数据为3*3的卷积核,则将所述3*3的卷积核数据重排序为9*9的数据,同时将第二featuremap数据的相应区域重排序为9*9的数据;
如果weights数据不为3*3的卷积核,则判断weights数据是否为1*1的卷积核;
如果weights数据为1*1的卷积核,则将所述1*1的卷积核数据重排序为9*9的数据;
对所有9*9的数据进行脉动阵列计算;
对不同卷积核进行累加处理;
对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
可选地,将所述7*7的卷积核拆分成3*3的卷积核的方法,包括:
将所述7*7的卷积核补充为9*9的卷积核;
按照从左到右和从上到下的顺序,将所述9*9的卷积核平分为9个3*3的卷积核。
可选地,所述将第一featuremap数据拆分成第二featuremap数据的方法,具体为:
按照卷积核拆分的偏移位置,将第一featuremap数据拆分成9个第二featuremap数据。
可选地,对不同卷积核进行累加处理的方法包括:
将3*3卷积核对应列相乘累加;
将1*1卷积核对应列相乘不累加;
将7*7卷积核平分成的9个3*3的卷积核累加。
可选地,所述采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据,包括:
根据层数获取量化参数;
将int32数据进行右移;
判断移位后的int32数据是否<0;
如果移位后的int32数据<0,对int数据取反加一;
判断取反加一后的数据是否>127;
如果取反加一后的数据>127,将取反加一后的数据置为127;
否则,将取反加一后的数据与0xff的低8位数据进行与计算;
如果移位后的int32数据≥0,判断移位后的数据是否>127;
如果移位后的数据>127,将移位后的数据置为127;
否则,将移位后的数据与0xff的低8位数据进行与计算;
输出量化后的数据,所述量化后的数据为:int8数据,float16数据或者int4数据。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种基于resnet50网络的ai加速卡仿真测试系统,该测试系统主要包括:卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块和量化模块。ai算法的卷积神经网络中卷积计算量大,本实施例中的卷积模块,通过按照不同的卷积核进行分别计算,能够有效简化卷积计算,并利用量化模块将float32数据的卷积计算转换为int8等量化后数据的卷积操作,能够有效减少运算量,从而提高数据处理速度,节省仿真测试时间,从而快速验证ai加速卡的系统设计问题和量化后的算法精度,进而加快软件调试和硬件开发速度。
本申请还提供一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,该工作方法中,首先搭建基础模块,其次利用基础模块构建branch1分枝和branch2分枝,利用branch1分枝和branch2分枝组成res;然后利用res构建resnet50网络;利用卷积模块进行卷积计算;采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据;根据量化后的数据,在resnet50网络中对ai加速卡进行仿真测试。本实施例中通过利用基础模块构建resnet50网络,并在resnet50网络中进行卷积等计算,能够有效验证ai加速卡在resnet50网络中性能,从而提高ai加速卡从设计到板卡制作的速度。本实施例的卷积计算中,通过按照不同的卷积核进行分别计算,能够有效简化卷积计算,从而提高仿真效率。而且本实施例中采用量化模块对卷积计算后的float32数据进行量化,能够有效减少运算量,从而提高数据处理速度,节省仿真测试时间,从而快速验证ai加速卡的系统设计问题和量化后的算法精度,进而加快软件调试和硬件开发速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种基于resnet50网络的ai加速卡仿真测试系统的结构示意图;
图2为本申请实施例中resnet50网络结构示意图;
图3为本申请实施例中卷积模块的工作原理示意图;
图4为本申请实施例中量化模块的工作原理示意图;
图5为本申请实施例所提供的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图1,图1为本申请实施例所提供的一种基于resnet50网络的ai加速卡仿真测试系统的结构示意图。
由图1可知,本实施例中基于resnet50网络的ai加速卡仿真测试系统,主要包括:卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块和量化模块。
本实施例采用c 编程,分别实现网络中的卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块和量化模块等基础模块,每个模块都是一个c 类实现,对于resnet50网络进行分类划分,分为res1、res2、res3、res4、res5、全连接和softmax几大部分组成,用基础模块组合成res中的branch1和branch2分支,再用这些branch分分支组成的res,从而构成resnet50整个网络。本实施例中resnet50网络结构示意图可以参见图2。图2中convolution为卷积模块、relu为激活模块、pooling为池化模块、elwise为残差模块、fullconnect为全连接模块、softmax为softmax模块、quantization为量化模块。
继续参见图1,图1中卷积模块,用于根据量化后的数据,按照不同的卷积核进行卷积计算。
本实施例中量化后的数据包括:int8数据,float16数据或者int4数据。即:可以利用int8数据代替float32数据,也可以采用float16数据代替float32数据,还可以采用int4数据代替float32数据。本实施例中量化后的数据优选int8数据。
进一步地,卷积模块包括:数据获取单元、第一判断单元、拆分单元、第二判断单元、重排序单元、脉动阵列计算单元、第三判断单元、计算单元和累加单元。
其中,数据获取单元,用于获取量化后的featuremap数据、weights数据、biase数据和量化参数数据;第一判断单元,用于判断weights数据是否为7*7的卷积核;拆分单元,用于当weights数据为7*7的卷积核时,将7*7的卷积核拆分成3*3的卷积核,并将第一featuremap数据拆分成第二featuremap数据,第一featuremap数据为7*7的卷积核所匹配的featuremap数据,第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据;第二判断单元,用于当weights数据不为7*7的卷积核时,判断weights数据是否为3*3的卷积核;重排序单元,用于当weights数据为3*3的卷积核时,将3*3的卷积核数据重排序为9*9的数据,以及将第二featuremap数据的相应区域重排序为9*9的数据;脉动阵列计算单元,用于将9*9的数据进行脉动阵列计算;第三判断单元,用于当weights数据不为3*3的卷积核时,判断weights数据是否为1*1的卷积核;重排序单元,还用于当weights数据为1*1的卷积核时,将1*1的卷积核数据重排序为9*9的数据;计算单元,用于对重排序后的3*3卷积核数据进行卷积计算,获取输入通道上featuremap数据,featuremap数据的数据格式为int32;累加单元,用于对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
本实施例中卷积模块的工作原理示意图可以参见图3。由图3可知,以量化后的数据采用int8数据为例,本实施例中卷积模块的工作过程为:
1)获取量化后的featuremap、weights、biase和量化参数数据。
2)判断weights是否7x7的卷积核,若是,则将7x7卷积核在右方、下方补0,使其成为9x9的卷积核,然后按照从左到右、从上到下的顺序平分成9个3x3的卷积核,同时7x7卷积核对应的输入featuremap按照卷积核拆分的偏移位置,拆分成9个featuremap,这9个featuremap符合3x3卷积核的padding尺寸,不足的地方补0。
3)若不是7x7的卷积核,则继续判断是不是3x3卷积核,若是,则先将3x3的卷积核对应的featuremap依次取出11x11的区域。需要注意的是,此处11x11的区域与前11x11会有2列或2行的重叠)。
然后将11x11区域再拆分出9个5x5区域,9个5x5区域之间会有2行货2列的重叠,5x5区域进行数据重排序为9x9,同时3x3卷积核数据重排序为9x9,经过脉动阵列使对应两个9x9的列相乘累加得出9个数,排成3x3区域,然后组合出输出featuremap。
4)若不是3x3卷积核,则继续判断是不是1x1卷积核,若是,则先将1x1的卷积核对应的featuremap依次取出9x9的区域,同时1x1卷积核排成9x9数据,9x9的81个数都是1x1的数据,经过脉动阵列计算单元的计算,使对应两个9x9的相乘得出9x9区域,然后组合出输出featuremap。
5)将步骤2)中7x7卷积核拆分成9个3x3卷积核,经过3x3卷积核的卷积计算之后,得到的featuremap进行累加,获取一个通道的featuremap数据,因为涉及到两个int8数据相乘及累加,计算活动featuremap数据是int32。
6)以上所有卷积核进行卷积计算之后,加上int32的bias数据都得到一个通道上的featuremap。
后续在量化模块中需将int32数据量化到int8数据。
继续参见1可知,本实施例中还设置有激活模块,用于利用relu函数进行激活操作。relu(rectifiedlinearunit)函数提供了几个简单的线性变换,给定元素x,该函数定义为relu(x)=max(x,0)。可以看出,relu函数只保留正数元素,并将负数元素清零。
池化模块,用于根据相应的下采样方法对数据进行降维。
根据采样方法的不同,池化模块具体采用最大值下采样池化单元,或者平均值下采样单元。其中,最大值下采样单元,用于选择窗口中最大值作为下采样输出结果;平均值下采样单元,用于统计选择窗口中的数据,计算平均值作为下采样的输出结果。
残差模块,用于将branch分支的输入数据和残差数据进行两两加和,获取输出数据,branch分支用于组成res。
全连接模块,用于对输入层神经元和输出层神经元建立权重连接。
本实施例中全连接层是输出层中的输入层神经元和输出层神经元都有权重连接,可以把全连接模块等同于卷积模块中的1*1卷积核。
softmax模块,用于将多个神经元的输出映射到(0,1)区间内,并在(0,1)区间内利用公式
由以上公式可知,
量化模块,用于对卷积计算后的int32数据进行量化,获取量化后的数据。本实施例中量化模块的工作原理示意图参见图4。
实施例二
在图1-图4所示实施例的基础之上参见图5,图5为本申请实施例所提供的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法的流程示意图。
由图5可知,本实施例中的工作方法主要包括如下过程:
搭建基础模块,基础模块包括:卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块以及量化模块。
s1:利用基础模块构建branch1分枝和branch2分枝。
s2:利用branch1分枝和branch2分枝组成res。
s3:利用res构建resnet50网络。
s4:利用卷积模块进行卷积计算。
具体地,步骤s4又包括如下过程:
s40:获取量化后的featuremap数据、weights数据、biase数据和量化参数。
s41:判断weights数据是否为7*7的卷积核。
s42:如果weights数据为7*7的卷积核,将7*7的卷积核拆分成3*3的卷积核,同时将第一featuremap数据拆分成第二featuremap数据,第一featuremap数据为7*7的卷积核所匹配的输入featuremap数据,第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据。
进一步地,本实施例中将7*7的卷积核拆分成3*3的卷积核的方法,包括:
s421:将:7*7的卷积核补充为9*9的卷积核;
s422:按照从左到右和从上到下的顺序,将所述9*9的卷积核平分为9个3*3的卷积核。
将第一featuremap数据拆分成第二featuremap数据的方法,具体为:
按照卷积核拆分的偏移位置,将第一featuremap数据拆分成9个第二featuremap数据。
s43:如果weights数据不为7*7的卷积核,则判断weights数据是否为3*3的卷积核。
s44:如果weights数据为3*3的卷积核,则将3*3的卷积核数据重排序为9*9的数据,同时将第二featuremap数据的相应区域重排序为9*9的数据。
s45:如果weights数据不为3*3的卷积核,则判断weights数据是否为1*1的卷积核。
s46:如果weights数据为1*1的卷积核,则将1*1的卷积核数据重排序为9*9的数据。
s47:对所有9*9的数据进行脉动阵列计算。
s48:对不同卷积核进行累加处理。
具体地,步骤s48包括如下过程:
s481:将3*3卷积核对应列相乘累加;
s482:将1*1卷积核对应列相乘不累加;
s483:将7*7卷积核平分成的9个3*3的卷积核累加。
s49:对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
s5:采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据。
具体地,步骤s5包括如下过程:
s501:根据层数获取量化参数;
s502:将int32数据进行右移;
s503:判断移位后的int32数据是否<0;
如果移位后的int32数据<0,执行步骤s504:对int数据取反加一;
s505:判断取反加一后的数据是否>127;
如果取反加一后的数据>127,执行步骤s506:将取反加一后的数据置为127;
也就是,利用127将int32数据截断,大于127的数置为127,小于127的数置为-127。
否则,执行步骤s507:将取反加一后的数据与0xff的低8位数据进行与计算;
如果移位后的int32数据≥0,执行步骤s508:判断移位后的数据是否>127;
如果移位后的数据>127,执行步骤s509:将移位后的数据置为127;
否则,执行步骤s510:将移位后的数据与0xff的低8位数据进行与计算;
s511:输出量化后的数据。
其中,量化后的数据为:int8数据,float16数据或者int4数据。
继续参见图5可知,获取量化后的数据之后,执行步骤s6:根据量化后的数据,在resnet50网络中对ai加速卡进行仿真测试。
该实施例中未详细描述的部分,在图1-图4所示的实施例中已经详细阐述,在此不再赘述。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种基于resnet50网络的ai加速卡仿真测试系统,其特征在于,所述仿真测试系统包括:
卷积模块,用于根据量化后的数据,按照不同的卷积核进行卷积计算;
激活模块,用于利用relu函数进行激活操作;
池化模块,用于根据相应的下采样方法对数据进行降维;
残差模块,用于将branch分支的输入数据和残差数据进行两两加和,获取输出数据,所述branch分支用于组成res;
全连接模块,用于对输入层神经元和输出层神经元建立权重连接;
softmax模块,用于将多个神经元的输出映射到(0,1)区间内,并在(0,1)区间内利用公式
量化模块,用于对卷积计算后的int32数据进行量化,获取量化后的数据。
2.根据权利要求1所述的一种基于resnet50网络的ai加速卡仿真测试系统,其特征在于,所述卷积模块包括:
数据获取单元,用于获取量化后的featuremap数据、weights数据、biase数据和量化参数数据;
第一判断单元,用于判断weights数据是否为7*7的卷积核;
拆分单元,用于当weights数据为7*7的卷积核时,将所述7*7的卷积核拆分成3*3的卷积核,并将第一featuremap数据拆分成第二featuremap数据,所述第一featuremap数据为所述7*7的卷积核所匹配的featuremap数据,所述第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据;
第二判断单元,用于当weights数据不为7*7的卷积核时,判断weights数据是否为3*3的卷积核;
重排序单元,用于当weights数据为3*3的卷积核时,将所述3*3的卷积核数据重排序为9*9的数据,以及将第二featuremap数据的相应区域重排序为9*9的数据;
脉动阵列计算单元,用于将所述9*9的数据进行脉动阵列计算;
第三判断单元,用于当weights数据不为3*3的卷积核时,判断weights数据是否为1*1的卷积核;
所述重排序单元,还用于当weights数据为1*1的卷积核时,将所述1*1的卷积核数据重排序为9*9的数据;
计算单元,用于对重排序后的3*3卷积核数据进行卷积计算,获取输入通道上featuremap数据,所述featuremap数据的数据格式为int32;
累加单元,用于对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
3.根据权利要求1所述的一种基于resnet50网络的ai加速卡仿真测试系统,其特征在于,所述池化模块具体为最大值下采样池化单元或平均值下采样单元;
所述最大值下采样单元,用于选择窗口中最大值作为下采样输出结果;
所述平均值下采样单元,用于统计选择窗口中的数据,计算平均值作为下采样的输出结果。
4.根据权利要求1-3中任一所述的一种基于resnet50网络的ai加速卡仿真测试系统,其特征在于,所述量化后的数据为:int8数据,float16数据或者int4数据。
5.一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,所述工作方法包括:
搭建基础模块,所述基础模块包括:卷积模块、激活模块、池化模块、残差模块、全连接模块、softmax模块以及量化模块;
利用所述基础模块构建branch1分枝和branch2分枝;
利用所述branch1分枝和branch2分枝组成res;
利用所述res构建resnet50网络;
利用卷积模块进行卷积计算;
采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据;
根据量化后的数据,在resnet50网络中对ai加速卡进行仿真测试。
6.根据权利要求5所述的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,所述利用卷积模块进行卷积计算,包括:
获取量化后的featuremap数据、weights数据、biase数据和量化参数;
判断weights数据是否为7*7的卷积核;
如果weights数据为7*7的卷积核,将所述7*7的卷积核拆分成3*3的卷积核,同时将第一featuremap数据拆分成第二featuremap数据,所述第一featuremap数据为所述7*7的卷积核所匹配的输入featuremap数据,所述第二featuremap数据为与3*3的卷积核padding尺寸相匹配的featuremap数据;
如果weights数据不为7*7的卷积核,则判断weights数据是否为3*3的卷积核;
如果weights数据为3*3的卷积核,则将所述3*3的卷积核数据重排序为9*9的数据,同时将第二featuremap数据的相应区域重排序为9*9的数据;
如果weights数据不为3*3的卷积核,则判断weights数据是否为1*1的卷积核;
如果weights数据为1*1的卷积核,则将所述1*1的卷积核数据重排序为9*9的数据;
对所有9*9的数据进行脉动阵列计算;
对不同卷积核进行累加处理;
对输入通道上的featuremap数据进行累加,获取输出通道上的featuremap数据。
7.根据权利要求6所述的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,将所述7*7的卷积核拆分成3*3的卷积核的方法,包括:
将所述7*7的卷积核补充为9*9的卷积核;
按照从左到右和从上到下的顺序,将所述9*9的卷积核平分为9个3*3的卷积核。
8.根据权利要求6所述的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,所述将第一featuremap数据拆分成第二featuremap数据的方法,具体为:
按照卷积核拆分的偏移位置,将第一featuremap数据拆分成9个第二featuremap数据。
9.根据权利要求6所述的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,对不同卷积核进行累加处理的方法包括:
将3*3卷积核对应列相乘累加;
将1*1卷积核对应列相乘不累加;
将7*7卷积核平分成的9个3*3的卷积核累加。
10.根据权利要求5-9中任一所述的一种基于resnet50网络的ai加速卡仿真测试系统的工作方法,其特征在于,所述采用量化模块对卷积计算后的float32数据进行量化,获取量化后的数据,包括:
根据层数获取量化参数;
将int32数据进行右移;
判断移位后的int32数据是否<0;
如果移位后的int32数据<0,对int数据取反加一;
判断取反加一后的数据是否>127;
如果取反加一后的数据>127,将取反加一后的数据置为127;
否则,将取反加一后的数据与0xff的低8位数据进行与计算;
如果移位后的int32数据≥0,判断移位后的数据是否>127;
如果移位后的数据>127,将移位后的数据置为127;
否则,将移位后的数据与0xff的低8位数据进行与计算;
输出量化后的数据,所述量化后的数据为:int8数据,float16数据或者int4数据。
技术总结