基于FPGA的一维卷积神经网络CNN的实现(二)资源分配

资源分配

环境:Vivado2019.2。
Part:xcku040-ffva1156-2-i,内嵌DSP个数 1920个,BRAM 600个也就是21.1Mb。

说明:通过识别加高斯白噪声的正弦波、余弦波、三角波较简单的实例来利用FPGA实现一维CNN网络,也就是将下列数据传输至FPGA,识别出下面哪些是正弦波、余弦波、三角波,通过简单实例实践,从而实现更复杂的网络。主要是实现CNN网络的搭建,本文因为追求速度利用了大量的DSP,后期加入复杂网络进行DSP复用。

第一节:基于FPGA的一维卷积神经网络CNN的实现(一)框架
第二节:基于FPGA的一维卷积神经网络CNN的实现(二)资源分配


再次认识整个网络,第一层卷积核、第一次池化是串行执行,第一层池化和第二层卷积是并行执行,第二层池化、第三层卷积、全连接是并行执行。

在这里插入图片描述

接下来就各层分析以下资源消耗情况

一、DSP资源分配

我们知道,卷积主要做的是乘加运算,FPGA加速主要是通过内嵌的DSP资源去做这些乘法。

DSP? 啥
在这里插入图片描述
①27bit预加器(加法器)
②27*18乘法器
③可以做加(减)法器,累加(减)器,逻辑运算(与或非)
④模式探测器,主要实现带掩膜的数据比较,上下溢出检测,记到一定数据对结果进行重置功能。
⑤数据选择器

例如如下模型,卷积核通道为1,卷积核元素为3个,需要的乘法器为3个,也就是需要3个DSP。
请添加图片描述

我们所设计的网络

1.第一层卷积

第一层卷积:1通道,6个卷积核,卷积核内的元素为5,卷积所需要的的乘法器为1×6×5=30,那么我们所需的DSP资源为1×6×5=30个。
请添加图片描述

2.第二层卷积

第二层卷积:6通道,16个卷积核,卷积核内的元素为5,卷积所需要的的乘法器为6×16×5=480,那么我们所需的DSP资源为6×16×5=480个。
请添加图片描述

3.第三层卷积

第三层卷积:16通道,16个卷积核,卷积核内的元素为5,卷积所需要的的乘法器为16×16×5=1280,那么我们所需的DSP资源为16×16×5=1280个。
请添加图片描述

4、全连接层

全连接层:理论上是将第三层卷积的16条通道25点的结果拼接成一条400点的数据输出,然后分别和3条400点的权重相乘相加得到3个结果R1、R2、R3,但是这样串行的去相乘相加无疑很耗时间。
在这里插入图片描述在这里插入图片描述
但是我们用的可是可以并行的FPGA,出来的并行数据为何要连接成串行计算呢?
在这里插入图片描述
我们何不把权重(事先存储的参数数据,想咋存都由你,或者外部传输进去的数据,想怎么传还是由你)也构造成这种形式,让地三层卷积16通道结果出来的同时就立马可以分别和3个通道对应的权重相乘相加,这不就达到了并行的结果。

在这里插入图片描述
这样所需要的的乘法器为就为16×3,也就是DSP所需16×3=48个。

5.总结

层级特征 使用DSP个数
第一层卷积 1通道、6个卷积核、卷积核元素为5 1×6×5=30
第二层卷积 6通道、16个卷积核、卷积核元素为5 6×16×5=480
第三层卷积 16通道、16个卷积核、卷积核元素为5 16×16×5=1280
全连接 第三层16通道卷积的输出,分别乘加3个16通道权重 16×3=48
1838

对比一下资源使用表:
在这里插入图片描述

DSP资源没这么多的时候,就考虑复用。

二、BRAM资源

每层所需的权重参数本设计是暂存在ROM中,而ROM所占用的资源为BRAM资源,后续复杂网络,权重参数可能会通过PCIE总线进行传输。

所谓的权重参数就是每个卷积核、每条卷积核相应的偏置,全连接参数、偏置。

1.第一层卷积

第一层通道为1,卷积核个数为6,卷积核元素为5。那么第一层卷积参数就为6×5=30,别忘了每个卷积最后的结果都会加一个偏置,也就是一条卷积核卷积完成后的结果上整体去加上这个偏置,所以偏置个数为6,那么第一层所需的参数为6×5+6=36。
请添加图片描述
比如该设计的第一层的1通道16个卷积核,卷积核元素个数为5的参数:

-0.41392267	 -0.37628385	-0.38678840	   -0.10021902	-0.42755467
0.46177748	  0.47878936	-0.011841099	0.36656979	-0.33966425
0.19130668	  0.14565417	-0.17707989	    0.26029965	 0.29681087
-0.29763651	 -0.37699795	 0.35222396	   -0.20345914	-0.37277707
-0.36939585	  0.19159849	-0.23786691	   -0.37849170	-0.44727486
-0.075469948 -0.18664657	-0.30474073	   -0.23001774	-0.098302089

比如该设计的第一层6个卷积核对应的偏置参数:

-0.16858324	-0.25512469	-0.27672836	-0.19529539	0.45146680	0.46845901

2.第二层卷积

第二层通道为6,卷积核个数为16,卷积核元素为5。那么第二层卷积参数就为6×16×5=480,偏置个数为16,那么第二层所需的参数为6×16×5+16=496。
请添加图片描述
比如该设计的第二层的6通道16个卷积核,卷积核元素个数为5参数:

val(:,:,1) =

   -0.1547    0.2032    0.1963   -0.1448   -0.1131
    0.1735    0.1296    0.1969    0.2054   -0.0226
   -0.0928   -0.0498    0.2513    0.0210   -0.0890
    0.0415   -0.0431    0.1257    0.1251    0.1287
    0.0116    0.1061   -0.1738    0.1131   -0.0005
   -0.1320    0.0712    0.0488    0.0231    0.0075


val(:,:,2) =

    0.1026   -0.0004    0.0034   -0.0461    0.1522
   -0.1177   -0.0905    0.0413   -0.1417   -0.1348
    0.0588    0.0095    0.0238   -0.0664   -0.1272
   -0.0614    0.0279   -0.1217   -0.0029    0.0752
    0.0962   -0.1873    0.0188   -0.1346    0.0241
   -0.1899   -0.1165   -0.0286    0.1052    0.1000


val(:,:,3) =

   -0.2075    0.0816   -0.1127    0.0045   -0.0761
    0.2506    0.2455   -0.0971   -0.0761   -0.0129
    0.2404   -0.0074    0.0966   -0.0890   -0.0007
    0.0926    0.1140    0.1104   -0.0333    0.0803
   -0.0943    0.0773    0.1850    0.0859   -0.0638
   -0.1796   -0.0393   -0.0565   -0.1135   -0.0263


val(:,:,4) =

   -0.0133   -0.0443   -0.0063   -0.0984    0.0493
    0.1532    0.1724   -0.0733   -0.0340   -0.0326
   -0.0105    0.1516   -0.0407   -0.0529   -0.0170
   -0.1523    0.0605   -0.0966   -0.0619   -0.1496
   -0.1155   -0.0049   -0.1252    0.1687    0.2154
   -0.1118   -0.0710   -0.0020    0.0922    0.2124


val(:,:,5) =

   -0.0509    0.0435   -0.0144    0.1848    0.0542
    0.2265    0.0743    0.1912    0.0046   -0.0996
   -0.0427   -0.1315   -0.0471    0.0246   -0.0847
    0.1970   -0.1339   -0.1562   -0.0466    0.1271
   -0.1135   -0.0592   -0.1675    0.0143    0.0434
    0.0487   -0.1833    0.0461    0.1186   -0.1582


val(:,:,6) =

   -0.0779    0.1322    0.2086    0.1222    0.0509
   -0.1968   -0.1623    0.0085   -0.0786    0.0393
    0.0522   -0.0438   -0.1044   -0.0294   -0.0912
    0.1010    0.2230    0.1075    0.0100   -0.0050
    0.1049    0.1498    0.0103    0.1068    0.1174
   -0.0630    0.1601   -0.0098    0.1374    0.2107


val(:,:,7) =

    0.0782   -0.0438   -0.1652    0.0035    0.0205
    0.2311    0.0875   -0.1125    0.0758    0.1435
   -0.0878    0.0090    0.0917   -0.1049   -0.1181
    0.1242   -0.0596   -0.0068    0.1177   -0.0373
    0.0162    0.0092   -0.1835   -0.0169   -0.0970
   -0.0093   -0.0643    0.1495    0.1413    0.0363


val(:,:,8) =

    0.1482   -0.1471    0.0542    0.0859   -0.1110
   -0.0803    0.1438    0.0147   -0.0928    0.0743
    0.1344    0.1544    0.1804    0.1789    0.1898
   -0.0955   -0.1667   -0.1229   -0.2301   -0.0559
    0.1493   -0.1870   -0.0373   -0.0948    0.0036
   -0.0054   -0.1074    0.0519    0.0120   -0.1034


val(:,:,9) =

    0.0590    0.0746   -0.1623    0.0310    0.5379
    0.1085   -0.0050   -0.1275   -0.0404    0.1794
   -0.0571    0.0902    0.1722   -0.0147    0.1321
    0.0155   -0.0003   -0.1564    0.1006   -0.0344
    0.1347    0.0920   -0.0719   -0.0287   -0.1190
   -0.1014    0.0934    0.0186   -0.1601   -0.1939


val(:,:,10) =

   -0.2035    0.0999   -0.1322    0.0682   -0.1048
    0.0995   -0.0815    0.1874   -0.1160    0.0260
   -0.1675   -0.1447   -0.1530    0.0755    0.0486
   -0.0879   -0.1178   -0.0372   -0.0689   -0.1216
   -0.1669   -0.0752    0.1888    0.0595   -0.0050
    0.0705    0.0905   -0.0413    0.1929    0.2123


val(:,:,11) =

   -0.0955    0.0658   -0.1620   -0.1087    0.0680
    0.2258    0.0300    0.1886   -0.0921   -0.0557
    0.1444    0.2510    0.1219   -0.0504    0.1861
   -0.1379    0.0132   -0.0342   -0.1072    0.0732
   -0.1169   -0.0613   -0.0702   -0.0899    0.0119
    0.0052   -0.1169   -0.0318   -0.0550    0.1045


val(:,:,12) =

    0.0427   -0.1520   -0.1143    0.0906    0.0012
    0.1343   -0.0920    0.1269    0.2326   -0.0352
    0.1491   -0.0491    0.0240    0.1408    0.2117
   -0.1461   -0.0904   -0.0562    0.1058   -0.1816
   -0.1743   -0.1477    0.0440   -0.0306    0.0281
    0.0376    0.0546   -0.1762    0.1463   -0.0549


val(:,:,13) =

    0.0388   -0.0922    0.0928    0.2161   -0.0026
   -0.0745   -0.0247    0.0622    0.1282   -0.1368
    0.1207   -0.0654   -0.0275    0.0763   -0.0236
    0.0025    0.0647    0.0925    0.1709   -0.0178
    0.1661    0.2081    0.2127    0.1999   -0.0897
    0.2426    0.2030    0.1917    0.1966    0.0323


val(:,:,14) =

   -0.0539    0.0233    0.0674   -0.0673    0.0012
    0.2553    0.0010    0.0550   -0.0045    0.2548
    0.1157    0.1743    0.0559    0.0050    0.2136
   -0.1661    0.1464   -0.0778   -0.0510   -0.1443
   -0.1775    0.1052   -0.0368   -0.1283    0.0468
    0.1562    0.0844   -0.1260   -0.0319   -0.1913


val(:,:,15) =

    0.0088   -0.0439    0.1869    0.2156    0.0045
   -0.0056   -0.1742   -0.0575   -0.0640    0.1588
   -0.1746    0.0565   -0.1516   -0.1399   -0.1901
   -0.0961    0.1196    0.0038   -0.1159    0.0634
    0.0062    0.1950    0.1605   -0.0952    0.1356
    0.2200    0.1404    0.1234    0.1719   -0.1164


val(:,:,16) =

   -0.0263   -0.0728   -0.0043    0.1152    0.2091
    0.1518    0.1548    0.0271    0.1760   -0.0435
    0.1513    0.1026    0.0266    0.0744    0.2038
    0.2373   -0.0509    0.0985    0.2076    0.1432
    0.1513    0.0789    0.1683    0.0555   -0.1111
    0.0974   -0.0354   -0.0795    0.0350    0.0588

第二层16个卷积核对应的偏置:

0.23936687	-0.10661833	0.15271537	0.061077386	0.016900102	-0.069750383	0.11862857	0.083581999	0.081415482	0.034861937	-0.032691609	-0.022287890	0.025896503	-0.085885495	0.035965338	0.23867875

3.第三层卷积

第三层通道为16,卷积核个数为16,卷积核元素为5。那么第二层卷积参数就为16×16×5=1280,偏置个数为16,那么第三层所需的参数为16×16×5+16=1296。
请添加图片描述

比如该设计的第三层的16通道16个卷积核,卷积核元素个数为5参数:


val(:,:,1) =

   -0.0300    0.0059    0.0910    0.0358    0.0334
   -0.0742    0.0914    0.0439    0.0247   -0.0544
   -0.0398   -0.0362   -0.0330    0.0634    0.0675
   -0.0858    0.0750   -0.0045   -0.0618   -0.0959
   -0.0090   -0.0846   -0.0634    0.0602   -0.0818
   -0.0337    0.0238    0.0320    0.0828    0.0617
    0.0066    0.0813    0.0713    0.0830   -0.1103
   -0.0977   -0.0097   -0.0735   -0.1122   -0.0822
   -0.0529   -0.0054   -0.0204    0.0529    0.0055
    0.0368   -0.0193    0.0703   -0.0231    0.0488
    0.1028   -0.0910   -0.0572    0.0877   -0.0683
   -0.0951    0.0384   -0.0784    0.1030   -0.0543
   -0.0076   -0.0692   -0.0111   -0.0090   -0.1038
   -0.0101    0.0348   -0.0650   -0.0731    0.0312
    0.0617   -0.0485    0.0893    0.0533   -0.0878
   -0.1151   -0.0369    0.0463   -0.0897    0.0195


val(:,:,2) =

    0.0641   -0.0588    0.1316    0.0727   -0.0295
   -0.0841   -0.0773   -0.0449   -0.0536   -0.0172
    0.0094    0.1279    0.1216   -0.0060   -0.0594
   -0.0335   -0.0194   -0.0694    0.1204   -0.0149
   -0.0271   -0.0577    0.0736    0.0085    0.1281
    0.0555   -0.0624   -0.0687    0.0265   -0.1115
   -0.0136    0.1482    0.0274    0.1024    0.1446
    0.1067   -0.0112    0.0499    0.0713    0.1445
    0.0596    0.0408   -0.0414   -0.0581    0.1377
   -0.0766    0.1030    0.0912    0.1598   -0.0158
    0.0247    0.0604    0.0507    0.0489    0.0257
    0.0949    0.0817    0.0412    0.1432    0.1386
   -0.0829    0.0827   -0.0143   -0.0725    0.1077
    0.1112    0.0524    0.1122    0.1327    0.0742
    0.0612    0.0809   -0.0110   -0.0770   -0.0872
    0.0663    0.0551   -0.0028   -0.0466   -0.0694


val(:,:,3) =

    0.1621    0.1361    0.1264    0.0486    0.1578
    0.0686   -0.0030    0.0562    0.0578   -0.0606
    0.1117   -0.0091    0.0875    0.0292    0.0210
   -0.0238    0.0865    0.0586    0.0414    0.0604
    0.0991    0.0854    0.0122    0.1483    0.0661
    0.0067   -0.1624   -0.1576   -0.0880   -0.0573
    0.0110    0.0292    0.1067    0.0781   -0.0308
    0.0861    0.1249    0.1486   -0.0215   -0.0297
    0.1563    0.0907    0.0150    0.1034   -0.0060
   -0.0581   -0.0311   -0.1056   -0.0522    0.0454
    0.0818    0.0634    0.1742   -0.0090    0.1096
    0.1358    0.1414   -0.0403    0.1785    0.0387
    0.0490   -0.0404   -0.0886   -0.0397   -0.0205
    0.1462    0.0797    0.1563   -0.0141   -0.0230
   -0.1314    0.0173   -0.1656   -0.0656    0.0776
    0.1302    0.0702    0.0675    0.1705    0.1217


val(:,:,4) =

    0.0640   -0.0430    0.1049   -0.0082    0.1085
   -0.1171   -0.0675    0.0608   -0.0063   -0.0495
   -0.0777   -0.0361   -0.0731   -0.0087    0.1168
   -0.0917    0.0220   -0.0561   -0.0674   -0.0525
    0.0594   -0.0636    0.0605    0.0511    0.0714
    0.0651    0.1174   -0.0123   -0.0810    0.0241
   -0.0633    0.1269   -0.0942    0.0491    0.0948
   -0.0597    0.0129    0.0417    0.0205   -0.0363
    0.0815    0.1332   -0.0694    0.0736    0.0335
    0.0668   -0.1458    0.0435   -0.1186   -0.0521
   -0.0390   -0.0872    0.0318    0.1457   -0.0524
   -0.0503   -0.0170    0.0140    0.1046    0.1472
    0.1184    0.1375    0.1029    0.0809   -0.0580
   -0.1392    0.0745    0.0532    0.0209    0.1194
    0.1533    0.0698    0.0174   -0.0750   -0.0738
   -0.0521    0.0649   -0.0528    0.0391   -0.0016


val(:,:,5) =

   -0.0968    0.0373   -0.0269   -0.0538    0.1112
    0.0710   -0.0976    0.0625   -0.0128   -0.0343
   -0.0451    0.1009    0.0966    0.0343   -0.0087
   -0.1024    0.0244   -0.0123   -0.0696   -0.0191
   -0.0030   -0.0049    0.0510    0.1273    0.0140
    0.1197    0.1444    0.1144    0.0263   -0.0464
   -0.0627   -0.0860    0.0486    0.1247    0.0180
    0.0410    0.1777    0.3064    0.2090    0.2552
    0.0521    0.2137    0.1248    0.0701    0.1518
   -0.0407    0.0311   -0.0110   -0.0697   -0.0190
    0.0557    0.1220    0.0789    0.2252    0.1032
   -0.0498    0.1052    0.0593    0.1192    0.1276
   -0.0325    0.0247    0.0055   -0.0340   -0.0720
   -0.0722   -0.0243   -0.0276    0.1265    0.1517
    0.1561    0.0250    0.1047   -0.0108   -0.0414
    0.1583    0.0877    0.1506    0.0433   -0.0789


val(:,:,6) =

   -0.0728    0.0442    0.0385   -0.0471   -0.0154
    0.0072    0.0391   -0.0084    0.0002   -0.0976
   -0.0739   -0.1029   -0.0900   -0.1138   -0.1138
    0.0240   -0.0099   -0.1016    0.0084    0.0009
    0.0685   -0.1583    0.0727   -0.0094   -0.0257
    0.1525    0.0244    0.1001    0.0041   -0.0541
   -0.0067    0.1186   -0.1098    0.0470    0.0112
   -0.0177   -0.0630   -0.0005   -0.0324    0.0210
   -0.0244   -0.0922   -0.1414    0.0240    0.0963
   -0.0153    0.0847    0.0212    0.0405   -0.0250
   -0.0457   -0.1211   -0.0128    0.0629   -0.0840
    0.0466   -0.1379    0.0012   -0.1214   -0.0062
   -0.0420    0.0128    0.0123    0.1205    0.0486
   -0.0388    0.0229   -0.0180   -0.1282   -0.0137
    0.1313    0.1193    0.0976    0.0322    0.1412
    0.1529    0.1396    0.1046    0.1261   -0.0089


val(:,:,7) =

    0.0305    0.1008    0.0171    0.0179    0.0790
    0.0360   -0.0355    0.0322   -0.0712    0.0382
   -0.1220    0.0664   -0.0903    0.0191    0.0485
   -0.0388   -0.1341    0.0266    0.0054   -0.0307
   -0.0856    0.0714   -0.0852   -0.0503    0.0372
    0.0881   -0.0982   -0.0699    0.0811   -0.0283
   -0.0552    0.0587    0.1054   -0.0041   -0.0736
    0.0355    0.0894    0.0794    0.0639    0.0466
    0.1013    0.0105   -0.0831    0.1491    0.0375
    0.0142   -0.0470   -0.0333   -0.0010   -0.0782
   -0.0467    0.1069    0.1561   -0.0448   -0.0016
    0.0472    0.0004    0.1106   -0.0354    0.1019
    0.1021   -0.0193    0.0950   -0.1098   -0.1190
   -0.1160    0.0075   -0.0755    0.0252    0.1069
    0.1117   -0.0808    0.0194    0.0890   -0.0550
    0.0880    0.1191    0.0649    0.0747    0.0893


val(:,:,8) =

    0.0435   -0.0356    0.0296   -0.0361    0.0730
    0.0751   -0.0390    0.0266   -0.0949    0.0629
   -0.0196   -0.0747    0.0440    0.0165    0.0513
   -0.1129   -0.0628   -0.0113   -0.0791    0.0518
   -0.0619    0.0621    0.0434   -0.0240    0.0915
   -0.0400    0.1049   -0.0402   -0.0252   -0.0030
    0.0294   -0.0184    0.0380   -0.0048   -0.0873
    0.0284   -0.0668   -0.0598    0.0298    0.0417
    0.0087   -0.0351   -0.0639    0.1051    0.0348
   -0.0510   -0.0278    0.0614    0.0891   -0.0195
   -0.0642   -0.0400   -0.1113    0.0299   -0.1354
    0.0222   -0.0814    0.0298   -0.0040   -0.0618
    0.0748    0.0859    0.0457    0.1189   -0.0451
   -0.0651   -0.1117   -0.0140   -0.0751    0.0786
    0.1019    0.0845    0.0676   -0.0045    0.0547
   -0.0326    0.0844    0.1374   -0.0234   -0.1025


val(:,:,9) =

    0.1020   -0.0721   -0.0498    0.0712   -0.0968
    0.0636    0.0878   -0.0437    0.0305   -0.0653
   -0.0449   -0.0061    0.0919   -0.1023    0.0782
    0.0476   -0.0155    0.0421    0.0641   -0.0475
    0.0973   -0.0368   -0.0697   -0.0838   -0.0587
    0.1199    0.0692   -0.0492   -0.0270    0.0576
    0.0282    0.0490    0.0220    0.0142    0.0207
    0.0511   -0.0088    0.0380    0.0553   -0.0538
   -0.0840    0.0539    0.0726    0.0839    0.0421
   -0.0681    0.0505   -0.1081   -0.0706    0.0561
    0.0891    0.0787    0.0465   -0.0763    0.0041
   -0.1021    0.0070    0.0716   -0.0913   -0.0685
    0.1270    0.0957    0.0706   -0.0932    0.0141
    0.0503   -0.0338   -0.0906   -0.0436   -0.0498
    0.0952    0.1004   -0.0263    0.1044   -0.0079
   -0.0602    0.0199   -0.0371   -0.1195    0.0324


val(:,:,10) =

    0.0991    0.1203    0.1527    0.1069    0.0153
    0.0762    0.0471    0.0401    0.0581    0.0629
    0.1991    0.1850    0.1453    0.2176   -0.0086
    0.0341    0.1236    0.0720    0.0371    0.1215
    0.0737    0.1050    0.1825    0.1360    0.0698
   -0.1324   -0.2803   -0.1920   -0.2690   -0.1511
    0.1115    0.1415    0.1538    0.1775    0.0428
    0.3504    0.3449    0.3283    0.4411    0.2743
    0.1720    0.0770    0.1436    0.2748    0.1496
    0.1083    0.0771    0.0430    0.1577    0.0033
    0.1286    0.2918    0.2266    0.2191    0.2807
    0.2588    0.2072    0.2606    0.1922    0.0717
    0.1633    0.0116   -0.0441    0.1433    0.0371
    0.1599    0.0242    0.1706    0.2071    0.0818
   -0.0658   -0.0983   -0.1772   -0.0653   -0.1437
    0.0599    0.0185    0.0306    0.1637    0.1117


val(:,:,11) =

   -0.0155   -0.0246    0.1564    0.0839   -0.0153
   -0.0388   -0.0532   -0.0131    0.0794   -0.1130
    0.1582   -0.0367    0.0567    0.0706    0.0496
    0.0101    0.0443    0.0942    0.1220    0.1115
    0.1104    0.0393    0.1547    0.0165    0.0257
   -0.0487   -0.1320    0.0092   -0.1445   -0.1319
   -0.0172   -0.0110    0.1168   -0.0620    0.0649
   -0.0037    0.0965    0.0692    0.0283    0.0750
   -0.0374    0.0304    0.0673    0.1021    0.0265
    0.1022   -0.0159    0.0987    0.0221    0.0592
    0.0379    0.0746    0.0873   -0.0230    0.1475
   -0.0198   -0.0496    0.1841    0.1499   -0.0143
    0.0219   -0.1190   -0.0708    0.0955   -0.0621
    0.1101    0.0507    0.0839   -0.0459   -0.0403
    0.0512   -0.0695   -0.0248    0.0169    0.0455
    0.1353    0.0179    0.1128    0.1278    0.0712


val(:,:,12) =

   -0.0453   -0.0323    0.0798    0.0473   -0.0647
    0.0191   -0.0265   -0.0889   -0.0915    0.0118
   -0.0141   -0.1483   -0.0628    0.0676    0.1102
   -0.0710   -0.1261   -0.1621   -0.1377   -0.1023
   -0.0774   -0.0565    0.1136    0.0022    0.1304
   -0.0034    0.0266    0.1424    0.0637    0.0313
    0.0122    0.0241   -0.0629   -0.0120    0.0454
    0.0740   -0.0148   -0.0297   -0.0153    0.0419
    0.1068    0.0772   -0.0176    0.0532    0.0532
   -0.0783   -0.0468   -0.0225   -0.1482   -0.1652
   -0.0101   -0.1618    0.0766    0.1619    0.0819
    0.0378    0.0532    0.1461    0.0702    0.0348
    0.1106   -0.0274    0.1503    0.0333   -0.0033
    0.0374    0.0964    0.0587    0.1588    0.1458
    0.0903    0.1272   -0.0156   -0.0522   -0.0305
   -0.0320    0.1182    0.0995    0.1164    0.0545


val(:,:,13) =

   -0.0787   -0.0151    0.1216   -0.0376   -0.0009
    0.0269   -0.0652   -0.0491   -0.0345    0.0414
   -0.0440    0.0674    0.0606    0.0366   -0.0795
    0.0680    0.0460    0.0706    0.0336    0.0139
    0.0645    0.0060    0.0517    0.0655    0.0078
    0.1490    0.0141    0.0307    0.1802    0.1084
   -0.0402    0.0440   -0.0954   -0.0065   -0.0624
   -0.0412    0.0398   -0.1044   -0.0771   -0.0866
    0.0212   -0.1480   -0.0760   -0.0281   -0.0483
    0.0498   -0.0096   -0.0348    0.0915    0.0691
   -0.0230   -0.0344    0.0212    0.0308    0.0334
   -0.1049    0.0271   -0.0445   -0.0040   -0.0776
    0.0908    0.1250    0.0772    0.1192    0.0916
   -0.0764   -0.0449   -0.0790    0.0506   -0.1085
    0.0619    0.0498    0.1334    0.0219    0.0897
   -0.0507   -0.0173   -0.0754    0.0811    0.1074


val(:,:,14) =

   -0.0327    0.0909    0.0189    0.0214    0.0418
    0.0504   -0.1191   -0.0241   -0.0623   -0.0404
    0.1074   -0.0237   -0.0367    0.1319    0.0139
   -0.0360    0.1079    0.0172    0.0942    0.1029
   -0.0077   -0.0818    0.1205    0.0555   -0.0829
   -0.0838    0.0139   -0.0379   -0.0067    0.1236
    0.0176    0.1034    0.0427    0.0058   -0.0931
    0.0302   -0.1147    0.0932   -0.0200   -0.0405
   -0.0797   -0.0112    0.0825   -0.0108    0.0705
    0.1372    0.0329    0.1619    0.0312    0.1382
    0.0748    0.0047   -0.0299    0.0751    0.0385
   -0.0940   -0.0849    0.0957    0.0572    0.0040
    0.0056   -0.0456   -0.0036    0.0285    0.0446
    0.0550    0.0295   -0.1093   -0.0235   -0.0648
   -0.0430    0.0337   -0.0026    0.0455    0.0837
   -0.0633    0.0675    0.0342    0.0619    0.0124


val(:,:,15) =

    0.1283    0.1020   -0.0208    0.1557    0.0837
   -0.0126   -0.0270   -0.0333   -0.0641   -0.1173
   -0.0054    0.1227    0.0811    0.1406    0.1286
    0.0885    0.0147    0.1081    0.1718   -0.0336
   -0.0370    0.0424    0.1475    0.0476    0.0017
    0.0432   -0.0571   -0.0842    0.1065   -0.0218
   -0.0028    0.0636    0.1474    0.1243    0.0437
    0.1233    0.0885   -0.0566   -0.0440   -0.0605
   -0.0726    0.1062   -0.0598   -0.0061   -0.0852
   -0.0950    0.0541   -0.0050    0.0988    0.1170
    0.0166   -0.0144    0.0525    0.0017   -0.0251
    0.1199   -0.0228    0.1837   -0.0202    0.0990
   -0.1106    0.0370   -0.0154   -0.0860    0.0519
    0.1417    0.0517    0.0312   -0.0189   -0.0658
   -0.0930   -0.1613   -0.0064   -0.0855    0.0524
    0.1479   -0.0182    0.0001    0.0122    0.0495


val(:,:,16) =

    0.0506    0.0510    0.0796    0.0178   -0.0208
    0.1106   -0.0664   -0.0926   -0.0246    0.0591
   -0.0400   -0.1554    0.0390    0.0438   -0.1349
    0.0709   -0.1068   -0.0959   -0.1046   -0.0561
   -0.0974   -0.0018    0.0486   -0.0129    0.0303
   -0.0213    0.0644    0.0659    0.1149    0.1200
   -0.1155    0.0751    0.0112   -0.0816   -0.1111
    0.0842   -0.0844   -0.1065   -0.0447    0.0027
   -0.0385   -0.0315    0.0963   -0.0445   -0.0612
   -0.0218   -0.0568    0.0404   -0.0255   -0.0539
   -0.1136   -0.0200    0.0135    0.0229    0.0837
   -0.0432    0.0776   -0.0398    0.1124    0.0199
    0.0435    0.0654    0.0518   -0.0805    0.1011
    0.0747   -0.0723   -0.1244    0.0486   -0.1376
    0.0138    0.0676    0.1414    0.0231   -0.0258
    0.0802    0.0892    0.0440   -0.0780   -0.0201


比如该设计的第三层的16个卷积核对应偏置:

-0.10552140	0.14183277	0.037448838	-0.038199190	-0.022324685	-0.049711946	-0.020050919	-0.0068996837	0.045187593	0.034231447	0.14684045	0.098354153	-0.027797140	0.044615991	0.017090062	0.028110711

4.全连接层

全连接层权重为3个通道,每个通道的长度为400,偏置为3,所需的参数总数为3×400+3=1203。
在这里插入图片描述
参数太多避免占用太多篇幅这里就不举例了。

5.总结

总结之前先了解一下:

BRAM 由一定数量固定大小的存储块构成的,使用 BRAM 资源不占用额外的逻辑资源,并且速度快,不过使用的时候消耗的 BRAM 资源只能是其块大小的整数倍,就算你只存了 1 bit 也要占用一个 BRAM。 一个 BRAM 的大小为 36K Bits,并且分成两个小的 BRAM 各自为 18K Bits,排列成又分为上下两块。内部视图如下:
在这里插入图片描述
本设计所使用的板子BRAM 600个也就是600×36Kbit=21.1Mb。

0.5个BRAM=18Kbit=18432bit

1 个BRAM =32Kbit=36864bit

还要明白:我们设计中运算数据位宽是多少,该设计所用的运算位宽为18bit,后期专门说明。

参数个数 数据位宽(bit) 所占内存(bit) 占用BRAM大小(个)
第一层卷积参数 6×5+6=36 18 36×18=648 0.5(不足18432bit)
第二层卷积参数 6×16×5+16=496 18 496×18=8928 0.5(不足18432bit)
第二层卷积参数 16×16×5+16=1296 18 1296×18=23328 1(不足36864bit)
全连接参数 400×3+3=1203 18 1203×18=21653 1(不足36864bit)

查看资源报告:
在这里插入图片描述

★★★如有错误欢迎指导!!!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>