#!/usr/bin/env python
import numpy as np
import argparse
from kaffe import KaffeError print_stderr
from kaffe.tensorflow import TensorFlowTransformer
def fatal_error(msg):
‘‘‘
:param msg:
:return: 用于打印错误信息列表
‘‘‘
print_stderr(msg)
exit(-1)
def validate_arguments(args):
‘‘‘
用于判断输入的命令的格式是否规范
:param args:
:return:
‘‘‘
if (args.data_output_path is not None) and (args.caffemodel is None):
fatal_error(‘No input data path provided.‘)#没有输入数据的路径
if (args.caffemodel is not None) and (args.data_output_path is None):
fatal_error(‘No output data path provided.‘)#没有提供输出数据路径
if (args.code_output_path is None) and (args.data_output_path is None):
fatal_error(‘No output path specified.‘)#没有指定输出路径。
def convert(def_path caffemodel_path data_output_path code_output_path phase):
‘‘‘
用于对输入的模型进行加载,和进行模型装换
:param def_path: 输入的caffe网络结构文件prototxt格式
:param caffemodel_path: 输入的caffe训练的到的模型文件caffemodel格式
:param data_output_path: 输出的
:param code_output_path:输出的tensorflow的网络结构代码
:param phase:为网络的训练模式,test 或者是train
:return:
‘‘‘
try:
transformer = TensorFlowTransformer(def_path caffemodel_path phase=phase)#加载网络结构和加载模型文件
print_stderr(‘Converting data...‘)#开始转换数据
if caffemodel_path is not None:
data = transformer.transform_data()#转换权值和偏置数据
print_stderr(‘Saving data...‘)
with open(data_output_path ‘wb‘) as data_out:
np.save(data_out data)#保存权值偏置数据
if code_output_path:#转化为tensorflow对应网络我心代码
print_stderr(‘Saving source...‘)
with open(code_output_path ‘wb‘) as src_out:
src_out.write(transformer.transform_source())#保存网络模型代码
print_stderr(‘Done.‘)#转换完成
except KaffeError as err:#捕获异常
fatal_error(‘Error encountered: {}‘.format(err))
def main():
parser = argparse.ArgumentParser()
parser.add_argument(‘def_path‘ help=‘Model definition (.prototxt) path‘)
parser.add_argument(‘--caffemodel‘ help=‘Model data (.caffemodel) path‘)
parser.add_argument(‘--data-output-path‘ help=‘Converted data output path‘)
parser.add_argument(‘--code-output-path‘ help=‘Save generated source to this path‘)
parser.add_argument(‘-p‘
‘--phase‘
default=‘test‘
help=‘The phase to convert: test (default) or train‘)
args = parser.parse_args()
#解析命令参数
validate_arguments(args)#判断命令参数的是否有错误
convert(args.def_path args.caffemodel args.data_output_path args.code_output_path
args.phase)#加载模型,和转换模型
if __name__ == ‘__main__‘:
main()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-09-20 14:01 caffe-tensorflow-master\
文件 97 2017-01-16 18:47 caffe-tensorflow-master\.gitignore
目录 0 2018-09-29 11:46 caffe-tensorflow-master\.idea\
文件 398 2018-09-17 10:39 caffe-tensorflow-master\.idea\caffe-tensorflow-master.iml
目录 0 2018-09-17 10:34 caffe-tensorflow-master\.idea\inspectionProfiles\
文件 292 2018-09-17 10:33 caffe-tensorflow-master\.idea\misc.xm
文件 298 2018-09-17 10:33 caffe-tensorflow-master\.idea\modules.xm
文件 37239 2018-09-29 11:46 caffe-tensorflow-master\.idea\workspace.xm
文件 883 2017-01-16 18:47 caffe-tensorflow-master\.pylintrc
文件 70 2017-01-16 18:47 caffe-tensorflow-master\.st
文件 3141 2018-09-20 14:01 caffe-tensorflow-master\convert.py
目录 0 2017-01-16 18:47 caffe-tensorflow-master\examples\
目录 0 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\
文件 2831 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\classify.py
文件 7924 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\dataset.py
文件 21675 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\imagenet-classes.txt
目录 0 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\
文件 852 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\alexnet.py
文件 853 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\caffenet.py
文件 7851 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\googlenet.py
文件 3067 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\helper.py
文件 1023 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\nin.py
文件 62496 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\resnet.py
文件 1180 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\vgg.py
文件 21 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\models\__init__.py
文件 1734 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\README.md
文件 3871 2017-01-16 18:47 caffe-tensorflow-master\examples\imagenet\validate.py
目录 0 2017-01-16 18:47 caffe-tensorflow-master\examples\mnist\
文件 1667 2017-01-16 18:47 caffe-tensorflow-master\examples\mnist\finetune_mnist.py
文件 1738 2017-01-16 18:47 caffe-tensorflow-master\examples\mnist\lenet.prototxt
文件 1725006 2017-01-16 18:47 caffe-tensorflow-master\examples\mnist\lenet_iter_10000.caffemodel
............此处省略32个文件信息