第一步把tensorflow保存的.ckpt模型转为pb模型, 并记下模型的输入输出名字.
第二步去ncnn的github上把仓库clone下来, 按照上面的要求装好依赖并make.
第三步是修改ncnn的CMakeList, 具体修改的位置有:
ncnn/CMakeList.txt
文件, 在文件开头处加入add_definitions(-std=c++11)
, 末尾处加上add_subdirectory(examples)
, 如果ncnn没有examples
文件夹,就新建一个, 并加上CMakeList.txt
文件.ncnn/tools/CMakeList.txt
文件, 加入add_subdirectory(tensorflow)
原版的tools/tensorflow/tensorflow2ncnn.cpp
里, 不支持tensorflow的elu
, FusedBathNormalization
, Conv2dBackpropback
操作, 其实elu
是支持的,只需要仿照relu
的格式, 在.cpp文件里加上就行. FusedBatchNormalization
就是ncnn/layer/
里实现的batchnorm.cpp
, 只是`tensorflow2ncnn里没有写上, 可以增加下面的内容:
else if (node.op() == "FusedBatchNorm")
{
fprintf(pp, "%-16s", "BatchNorm");
}
...
else if (node.op() == &