神经网络从算法训练到FPGA部署 (1)--开发流程说明 将深度神经网络算法部署到现实场景(基于FPGA),主要包含两部分的工作,一个是为场景找到合适的算法,训练出满足要求的模型;第2个是将模型定点化后部署在FPGA上运行,主要含以下步骤:准备工作:数据收集及TFrecord制作,数据预处理函数编写。 练习时从kaggle网站上获取带标注数据集; 制作训练与验证用的Tfrecord数据文件; ...
Xilinx的Zynq系列,ARM和PL通过DMA通信时如何保证DDR数据的正确性。 使用ZYNQ或者MPSoC的好处是可以通过PL逻辑设计硬件加速器,对功能进行硬件加速。加速器和ARM之间的交互信息一般包含自定义加速指令传递、待计算数据以及计算结果。这三种交互信息为了实现高性能往往需要使用DMA进行通信。考虑两种场景,一种是ARM将运算数据的结果或者一些待处理数据发往PL侧加速,一种是PL处理结果DMA传输到DDR内存,ARM读取数据接着处理。当有操作系统管理内存时...
petalinux操作步骤 整体流程安装1)sudo dpkg-reconfigure dash 在界面中将shell改成bash2)安装依赖库:sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-devsudo apt-get install -y flex bison lib...
Xilinx MPSoC调试经验二--datamovev地址非4字节对齐时的用法 Datamover的使用1)传输时如果需要支持地址非对齐,s2mm侧:地址非对齐时的命令设定assign s_axis_s2mm_cmd_tdata[22:0] = length;assign s_axis_s2mm_cmd_tdata[23] = 1; //type: 1-enable INCR 0- enable FIXED;assign s_axis_s...
xilinx MPSoC的一些调试经验一(逻辑部份集成的一些小问题) 1.关于SDK下PS给PL的时钟输出ZCU在SDK下的调试需要在run Configuration中把PL powerup勾选。否则PS端不会送出PL端的Clock时钟。2. 自己写的代码集成到block design中右击模块代码,然后点击add module to block design。就可以加入到block中。如果代码模块里面例化了IP,并且从其他地方拷贝过来的...
利用预训练VGG16实现分类 现实场景中,我们可能获得的带标注的样本会比较小,因此可以利用一些机构提供的预训练网络进行图片分类,这种做法可以利用同行的研究成果,并极大缩短训练时间。以下是利用VGG16进行猫狗分类的一个例子。 导入keras的一些需要的库:from keras.applications import VGG16import osimport numpy as npfrom k...
神经网络算法开发学习总结--算法应用及优化 1)算法目标设定 首先要确定一个算法目标及约束条件,比如运行时间、硬件内存限制、准确度等选择算法。 学习效果一般尽量采用单个指标进行评估,对于 N 个评价指标,选择其中一个指标作为优化指标,选择剩下的 N-1 个指标作为满足指标。 比如针对分类,有些场合关注查准率,有些场合关注查全率,而有些是用F1 score来评估。这些效果跟具体应用需求相关。 另外还应该...
神经网络算法开发总结--网络结构开发 看了一段时间吴恩达老师的深度学习微课程,收获较大,这阶段做个总结。算法开发包含算法框架开发、网络结构开发及改进、算法应用优化及模型训练、网络模型压缩这几个方向。今天主要总结下网络结构开发及改进方面相关的。模型开发一般包含3方面工作,新网络结构提出、现有网络功能单元增加、现有网络的局部算法优化:解决某一类问题的新的网络结构提出新的算法模型的开发一般为了解决几个问题:提升...
FPGA实现深度学习的优势及缺点 计算能力一般通过两个参数表征:Peak GOPs峰值性能 Real GOPs实测性能(针对特定网络)FPGA在推理过程,可以做到高的Real GOPs/Peak GOPs,而训练过程,他的结构与算法并不完全匹配。希望后面出的器件可以克服。FPGA的算力优势推理时的低延迟,特别时batch size为1时,这个在微软Brainwave Project项目中中反复提到。GPU的优...
FPGA不适合做DNN训练的原因分析 目前FPGA厂商把FPGA定位在DNN的推理上的应用,特别是低延迟,Batch很小的应用,还有像微软的brainwave也是把FPGA定位在推理上的应用,既然FPGA推理过程有宣称的各种低功耗低延迟的好处,为什么不把他应用在训练过程中呢?从算法加速上看,FPGA如果应用在训练上至少要克服两个缺点。 第一个就是精度问题。训练与推理一个很大的区别就是需要多次迭代进行BP计算,更新W...
FPGA实现神经网络加速的Hello World 听完很多大咖的观点,对于工程师,未来十年应该有两个技术可以做,一个是AI,提升生产力,一个是区块链,厘清生产关系。个人觉得还是AI好玩些,希望可以挤进去折腾下。对于AI应用落地,其实判断标准就两个,是否可以提升生产力(当然有时不是直接的,产生的数据可能在其他地方提高效率),一个是能否降低交易成本,把实惠给老百姓。 好像有点扯远了,我们还是聊技术吧。FPGA工程师如果想...
FPGA用于数据中心的网络加速 没在BAT这些数据中心的大厂工作过哈,从看过的论文以及逻辑推理,推测在数据中心,FPGA可以做哪些网络加速。1. OVS的在数据中心的应用场景 一种应该主要解决服务器中VM间的通信问题,包括服务器内部VM通信以及VM与外部VM间通信,实现后可以让VM迁移时比较方便,而且VxLAN支持的标签数比VLAN大很多,可以让逻辑网络overlay在物理网络上。不过这个事情现...
吴恩达机器学习练习六 SVM支持向量机1)Gaussian kernel实现,计算两个样本的相似度,用于学习非线性边界。sim = exp(-(x1-x2)'*(x1-x2)/(2*sigma^2)); 2)找到最优的C与sigma参数 其实就是枚举,计算不同参数组合的错误率,找到最小的。先用学习的样本进行模型学习,然后用验证集计算错误率。dataset3Params.m文件 ...
FPGA开发技能清单 1. 需求核对阶段1)良好的沟通技能:需要与需求方核对需要的功能及性能,态度很重要,谦逊专业的沟通态度才能对需求理解无偏差,理解错误,后面就可能引起构架的修改。对外团队协作能力很大一部分体现在这里。2)行业背景知识:需要把需求翻译成FPGA的功能点以及逻辑上的处理流程(流程及需要的数据结构,用硬件的大白话就是大的pipeline流水线功能以及每个功能对应的表项及数据结构)。2. 总...
吴恩达机器学习练习五 1. 线性回归正则化的代价函数和梯度计算 predictions = X*theta;sigma=predictions-y;J= sigma'*sigma/(2*m); J=J+lambda*(theta(2:end)'*theta(2:end))/(2*m);grad=(predictions-y)'*X./m;grad(2:end)=grad(2:end)'+lambda.*the...
吴恩达机器学习练习四 吴恩达机器学习练习四完成练习前要搞明白样本如何组织,训练集是5000x400的矩阵,每一行表示一个样本,也就是20x20的像素值。练习中使用的是3层网络,因此参数集是theta1和theta2.练习主要完成代价函数及反向传播算法中梯度的计算(nnCostFunction.m)代码中全部采用向量计算的方式,这样可以提升计算速度需要技巧的地方:将标签转为向量col_v=1:num_labels;for...
modelsim仿真调用xilinx IP的一种方法 网上有一些文章描述modelsim与vivado的联合仿真方法,一般都是在vivado的tool工具中选择编译仿真模型,然后选择器件进行编译,最后用生成的modelsim.ini去替换modelsim目录下的相同文件,但这种方法有一个很大的缺点就是modelsim版本绑定,比如vivado2017.4就需要配合modelsim10.6b的版本,否则在编译过程会报错。其实有一种更简单的...
吴恩达机器学习练习三 练习中的一些注意事项:1)dat文件里面其实包含了变量X与y信息。而且把这个变量名字也包含在文件中的。2)多分类时,预测结果要转成与Y可以比较的,需要在每一行找到最大值的索引(代表数字),然后与y进行比较[all_theta] = oneVsAll(X, y, num_labels,lambda);由于从dat文件中分解出来的y是数字1,2,3…并不能直接用于代价函数的计算,因此在oneVsAll...