caffe转换tensorflow工具caffe-tensorflow
来源:互联网 发布:如何获取阿里云优惠码 编辑:程序博客网 时间:2024/06/07 11:47
caffe-tensorflow转换介绍及使用
caffe-tensorflow可以将caffe的网络定义文件和预训练参数转换成tensorflow的形式,包括tensorflow的网络结构源码和npy格式的权重文件。
从github上下载源码,进入源码目录运行convert.py即可。
其调用格式为
python convert.py def_path --caffemodel caffemodel_path --data-output-path dataoutput_path --code-output-path codeoutput_path
其中def_path为必需项,四个参数两个caffe输入,两个tensorflow端的输出。如果只需要权重参数则只需前三个参数。输出的tensorflow代码为其源码中Network的子类,网络构建过程实现了其setup方法,因此需在代码中引入才可以调用。tensorflow目录下network.py这个文件中实现了Network类,这个类封装了一些layer,包括带group的conv层,caffe-tensorflow的转换还是比较安全的,自行转换会遇到很多诸如caffe,tensorflow卷积核格式、fc权重格式、输入输出数据表示格式的不同的问题,caffe-tensorflow这个项目都会自行转换。
caffe-tensorflow实现细节
caffe-tensorflow的具体原理是通过pycaffe读取网络定义文件,并重新生成一张图,图上的节点保存各个层的信息,GraphBuilder类负责生成图结构,每个节点代表一个layer,作者定义了许多transformer,每个transformer对图做一些操作,有对图中数据进行操作的也有对图中的layer进行修改的,其中DataInjector类对caffemodel数据进行读取并将数据分发到图的各个节点上。
DataReshaper将caffe与tensorflow中的不同格式做了转换,包括卷积核的格式换,tensorflow的卷积核是[filter_height, filter_width, in_channels, out_channels]而caffe的卷积核是[out_channels, in_channels, filter_height, filter_width],tensorflow的fc层参数也和caffe的不同,tensorflow一般为[input_dimension,output_dimension],caffe刚好相反。而且tensorflow第一个fc层需要对pool5进行reshape,而pool5层和caffe的pool5层由于格式不同(tensorflow为NHWC,caffe为NCHW)所以caffe的weight实际上并不能适用与简单的将NHWC格式展开,所以这一层的weight需要变换。另外lrn的参数不同也需要调整,具体细节在另一篇博客lrn的介绍中有说明。
- caffe转换tensorflow工具caffe-tensorflow
- caffe to tensorflow 工具几点注意事项
- Caffe模型转换成tensorflow模型
- Caffe转换tensorflow并 跨平台调用
- Caffe&TensorFlow&caffe配置记录
- Mac安装TensorFlow/Caffe
- 欧式距离 caffe tensorflow
- Tensorflow & Caffe 对比
- Tensorflow模型转caffe
- caffe 模型转tensorflow
- Caffe/TensorFlow/MXnet
- tensorflow(四)caffe-tensorflow学习记录
- 将caffe训练好的模型转换为tensorflow模型
- tensorflow安装:续caffe安装
- tensorflow和caffe共存问题
- Linux 16.04+Caffe+TensorFlow+CUDA9
- Caffe、TensorFlow、MXnet三个开源库对比
- 【开源】Caffe、TensorFlow、MXnet三个开源库对比
- 防止vc6.0运行代码后闪退
- 给定任意数组获取任意连续的项求和的最大值,并输出新的数组
- 用Python建设企业认证和权限控制平台
- 数据结构实验之查找三:树的种类统计
- OSX上进行JNI开发的流程及命令
- caffe转换tensorflow工具caffe-tensorflow
- 第四章 ALDS1_3_A:Stack 栈
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
- 12月23日 周六
- SpringBoot第一个示例
- 关于MAC下安装virtual box linux 系统-主机与虚拟机互通问题
- navicat for mysql 远程连接数据库时出现2003-Can't connect to Mysql on '主机名'(10061)解决方法
- svn清理失败的解决方法
- 优先级