Zynqnet(一)CNN优化训练

论文地址:https://github.com/dgschwend/zynqnet/blob/master/zynqnet_report.pdf

论文简介:介绍如何使用HLS将卷积计算的C/C++代码进行综合为硬件电路,实现神经网络计算的FPGA移植。

本文简介:用FPGA实现CNN网络计算,需要对网络进行一定的更改,使其具有一些适配FPGA计算的特点。本文主要介绍第三章在CNN训练阶段使用了哪些方法和技巧。

3.4.1网络训练优化

  • 结构分析,使用直方图表达每层的累乘操作次数(计算复杂度);
  • 复杂度占比分析;
  • SqueezeNet V1.1和ZynqNet在输出维度上进行了一些改进;
  • 将7×7的第一层卷积层改为3×3,64通道;
  • 去除不必要的padding;

3.4.2为FPGA实现的优化

  • ZynqNet CNN输入输出均为2的N次方;
  • 全卷积计算,将最大值池化等操作全部用步长为2的3×3卷积操作代替;
  • FPGA的片上内存资源受限制,Zynq XC-7Z045包括2180 kB Block RAM memory,可以容纳大概560 000个32位浮点数,然而conv10层的权值数目为736×1024个1×1卷积核,共有753 664个参数,为了让FPGA兼容该层的计算,将该层划分为conv10/split1 和conv10/split2,共两个512输出通道;

3.4.3为提升准确度进行的优化

线性学习率;

SqueezeNet的输出维度并不是持续下降的,而是在conv10处有个峰值,ZynqNet CNN则是规律性的持续下降;

数据扩充;

fine-tuning;

总结:以上部分需要机器学习或者深度学习相关的知识,一些技巧也是常见的技巧,这里并没有用到BN,但是BN是一个很好的技术,但是作者的源码也并不支持BN层。

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值