TensorFlow模型转为caffe模型
2024-08-26 17:32:40
最近由于要将训练好的模型移植到硬件上,因此需要将TensorFlow转为caffe模型。
caffe模型需要两个文件,一个是定义网络结构的prototxt,一个是存储了参数的caffemodel文件。只要生成这两个文件,caffe模型就算转好了。
在模型转换的过程中,我主要参考了https://github.com/lFatality/tensorflow2caffe。
首先根据已有的tensorflow模型定义caffe模型需要的网络结构prototxt文件,这个可以参考一些现有经典的prototxt。
然后生成caffe模型需要的模型参数caffemodel。基本过程是:把ckpt中的参数读出来,因为tensorflow和caffe对特征的维度处理不一样,tensorflow中特征的维度是NHWC(Number of filters * Height * Width * Channel),caffe中特征的维度是NCWH(Number of filters * Channel * width * height),所以,需要将参数从NHWC转为NCWH的顺序,然后保存为caffe模型。
具体过程,参考资料中讲得比较清楚,在此不做太多说明。在模型转换的过程中,在batch norm层的转换时碰到了一些问题,在caffe中batch norm中除了存储mean和variance之外还有scale_factor,在测试过程中需要将其设置为1。
下面是其中一层全连接层的转换代码。
net.params['fc15'][0].data[...] = w_15_new
net.params['fc15'][1].data[...] = b_15
net.params['fc15_bn'][0].data[...] = mean_15
net.params['fc15_bn'][1].data[...] = variance_15
net.params['fc15_bn'][2].data[...] = 1
net.params['fc15_scale'][0].data[...] = gamma_15
net.params['fc15_scale'][1].data[...] = beta_15
最新文章
- Maven 常用命令, 备忘
- Python快速建站系列-Part.Five.1-个人主页及发表文章
- Objective-C语言分类与协议
- 内存储与外存储(IO流的应用)
- FeatureClass的";import";(转换)功能
- Windows多线程同步系列之二-----关键区
- Ubuntu 16.04安装和配置Sublime Text 3
- iis配置,客户端可以下载apk,或者播放视频
- WCF配置问题(配置WCF跨域)
- ArcGIS API for JavaScript 4.x 本地部署之Nginx法
- java课程之团队开发冲刺阶段1.5
- Vue2开发大全
- 《常见排序算法--PHP实现》
- shell编程规范
- Installing Jenkins as a Windows service
- C#基础——C#中问号的使用
- Resharper安装使用手册
- Android Timer schedule
- C# 使用XPath解析网页
- OpenDaylight虚拟租户网络(VTN)详解及开发环境搭建