打开full_python文件夹,从该文件夹目录启动cmd
依次输入以下命令:
python mnist_backward.py
python predict.py
python read_params.py
python readpic_array.py
mnist_backward.py是后向传播算法,机器学习,可在该文件中更改学习率、损失率等等相关参数
cmd运行python mnist_backward.py,开始训练
python predict.py
图片推理,验证学习效果
Cmd运行python predict.py 预测结果
python read_params.py
提取得到两个偏置参数:
两个权重参数:
python readpic_array.py
将图片读取到数组,得到以下几个文件:
将这些生成或者原有的文件都进行修改(把所有的“ [ ] ”都改为“ { } ”,并且都是单层的,不要有嵌套<把“], [” 替换成“ ,” >,末尾要有分号“;”)
由图片生成的数组改成以下格式:数组名参照文件名
新建hls工程文件夹,将之前修改过的文件复制到该文件夹下,并创建一个C++文件:
在main.cpp中将之前生成的头文件都包含进去
设置全连接、偏置以及激活
Main函数中写入几张想要测试的图片
进入Quartus安装目录下的hls文件夹,cmd启动init_hls.bat,初始化编译环境,<不要关闭cmd>
然后回到之前创建的hls工程文件夹
cmd启用命令 i++ main.cpp
然后运行默认生成的a.exe
出现以下效果
可以看到识别率只有70%,返回之前的步骤,重新训练学习,继续操作
经过几次训练后得到的效果,识别率80%
通过i++指令将c代码转换成ip核
i++ -march=CycloneV main.cpp -ghdl
打开de10的黄金参考quartus工程
进入Quartus Tools–>Options–>IP setting -->IP Catalog Search Locations,添加刚刚前一步生成的IP核
路径选择之前hls文件夹下的\a.prj\components\full_connect
添加完成后,quartus界面右面的IP Catalog下的HLS内可找到full_connect
打开Platform Designer
选择sopc_system.qsys
将full_connect IP核添加进工程
直接finish
然后连接硬件如下
自动分配基地址、自动分配中断号
然后Generate HDLfile
直接Generate,然后closefinish全编译
编译完成后,启动SoC EDS 进入黄金参考工程所在目录
输入make dtb,生成dtb<设备树文件>
输入 ./generate_hps_qsys_header.sh 生成hps_0.h<<后面c工程要用到>>
进入黄金参考文件夹下的output_files,双击sof_to_rbf.bat文件,更新rbf文件,
将之前的dtb文件和rbf文件放入SD卡中,SD卡de10开发板,通电,启动开发板
在soc eds shell中输入 eclipse& ,启动eclipse,创建一个C工程,包含之前所有的头文件
添加两个路径
点击file_system
在quartus安装路径下找到这两个路径
在main.c中添加以下头文件
写完main.c后,点击锤子符号,生成二进制文件
建立远程连接(连接DE10开发板)
在图中所示位置输入开发板的IP地址
关于开发板的IP地址获取:通过串口连接开发板,输入ifconfig,可得到IP地址
然后按照下列操作,打开远程连接界面
输入开发板的用户名以及密码
连接成功后,会有绿色的+号
启动命令控制窗口
选择之前生成的二进制文件,复制到远程连接的开发板的目录下
在命令控制窗口执行以下操作
就可以看到程序对之前生成的头文件的预测结果
到此结束2021年1月14日 20:41:03