此示例演示如何创建、编译和部署工作流程
使用深度学习HDL工具箱,具有手写字符检测系列网络对象的对象™ 英特尔FPGA和SoC支持包。使用MATLAB®从目标设备检索预测结果。万博1manbetx
英特尔阿里亚酒店™ 10 SoC开发工具包
深度学习HDL工具箱™ 英特尔FPGA和SoC支持包万博1manbetx
深度学习HDL工具箱™
深度学习工具箱™
要加载经过修改后的国家理工学院标准(MNIST)数据库培训的预培训系列网络,请输入:
snet=getDigitNetwork();
要查看预训练系列网络的图层,请输入:
分析网络(snet)
创建一个目标对象,该对象具有目标设备的自定义名称和将目标设备连接到主机的接口。接口选项为JTAG和以太网。若要使用JTAG,请安装Intel™ 夸脱™ Prime Standard Edition 18.1。设置已安装的“英特尔Quartus Prime”可执行文件的路径(如果尚未设置)。例如,要设置工具路径,请输入:
%hdlsetuptoolpath('ToolName','alteraquartus II','ToolPath','C:\Altera\18.1\Quartus\bin64');
hTarget=dlhdl.Target(“英特尔”)
hTarget=具有以下属性的目标:供应商:“英特尔”接口:JTAG
创建的对象工作流程
类。创建对象时,指定网络和位流名称。指定保存的预训练MNIST神经网络snet作为网络。确保位流名称与数据类型和目标FPGA板匹配。在本例中,目标FPGA板是Intel Arria 10 SOC板,位流使用single数据类型。
hW=dlhdl.Workflow(“网络”,snet,“比特流”,“arria10soc_单人”,“目标”,hTarget)
hW=具有以下属性的工作流:网络:[1×1系列网络]位流:“arria10soc_single”处理器配置:[]目标:[1×1 dlhdl.Target]
要编译MNIST系列网络,请运行工作流程
对象
dn=hW.compile;
###优化系列网络:优化系列网络:优化系列网络:WeWeWeWeWeWenet.cnn.cnn.层。层。层。BaBaBaBa主要层。卷卷2层,层,卷积2层,层,层,层,层,卷积2层,层,层,层,层,卷积2层,层,层,层,层,层,层,层,层,层,层,卷积2层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,卷卷,层,层,层,层,层,卷,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,层,00000“28.0 MB”“指令数据偏移量”“0x02400000”“4.0 MB”“ConvWeightDataOffset”“0x02800000”“4.0 MB”“FCWeightDataOffset”“0x02c00000”“4.0 MB”“内偏移量”“0x03000000”“总计:48.0 MB”
要在Intel Arria 10 SoC硬件上部署网络,请运行工作流程
对象此函数使用编译函数的输出,使用编程文件对FPGA板进行编程。它还下载网络权重和偏差。deploy函数开始对FPGA设备进行编程,显示进度消息以及部署网络所需的时间。
硬件部署
###已跳过FPGA位流编程,因为相同的位流已加载到目标FPGA上。#####加载权重到FC处理器。####加载FC权重。当前时间为2020年6月28日13:45:47
要加载示例图像,请执行工作流程
对象,然后显示FPGA结果,输入:
inputImg=imread(‘五个28x28.pgm’); imshow(inputImg);
在配置文件“打开”的情况下运行预测,以查看延迟和吞吐量结果。
[预测,速度]=硬件预测(单个(输入),“个人资料”,“开”);
###已完成输入激活的编写运行单输入激活。深度学习处理器探查器性能结果LastLayerLatency(周期)LastLayerLatency(秒)FRAMESUM总延迟帧数/秒-------------------------网络49243 0.00033 1 49807 3011.6转换模块25983 0.00017转换模块16813 0.00005最大池容量14705 0.00003转换模块25205 0.00003最大池容量3839 0.00003转换模块35481 0.00004 fc转换模块23260 0.00016*DL处理器的时钟频率为:150MHz
[val,idx]=max(预测);fprintf('预测结果为%d\n',idx-1);
预测结果为5