前言:
提到深度学习,估计没人不知道caffe,是的,我们称之为coffee,相传当时写caffe框架时候,作者喜欢咖啡,因此,把他完成的深度学习命名为“caffe”,当然,这只是一个调侃。今天我们姑且不去谈论caffe怎么去学习,假设在看此文之前,您已经对caffe有一定的了解,至少你用过caffe去训练神经网络,不管是CNN还是RNN,说到底,这仅仅是一个深度学习平台,要了解深度学习,还是需要去深入点理论知识,要不然就会像我一样,只是一个搬运工,没有创新哈(这是实话)。言归正传,本文主要是想介绍一下如何去简化caffe代码,本人在使用caffe过程中的一点点笔记。
前提:
你已经用caffe训练好模型,并且已经在用这个框架去测试你的模型了。
为什么要简化:
使用caffe去测试,通常来说会把你的模型,网络层的连接情况,参数都打印出来,ok,姑且不说保密性问题,就是那么一大串的输出让你有点受不了,所以,本文将要介绍怎么屏蔽输出,同时也和大家聊聊怎么去掉训练模块中的hdf5模块,因为我们在测试应用中一般不会用hdf5模块代码。
正文:
(为了方便编译,我们全文在CPU_ONLY的模式下进行讲解)在caffe里,输出模块用的是LOG.
最简单的屏蔽方法:
先运行一遍初始化代码,找到输出的信息,如后在代码里面查找输出的信息,对应的屏蔽就行了。
其中需要大量注释的文件是net.cpp,这个文件是包含了网络初始化是后参数的读取与输出,其中主要的屏蔽的函数是“LOG_IF”:
比如:
这段被注释掉的代码就是输出网络中的参数名称,我们不需要其输出,因此把它屏蔽了。
其他的输出类似,另外在solver.cpp中有部分在测试中不要的输出,也可以将其注释。
温馨提示:
尽量不要注释错误提示信息,要不然,在模型测试中会很恼火的。
如何去掉hdf5模块:
为什么要去去除hdf5模块,1)要求的lib与dll比较多,在实际应用中,我们尽量精简,去掉hdf5会显得少了很多文件(虽然大小不大,但这一堆,看起来不舒服)哈哈。2)hdf5我们在测试中不用用到。
去除方法:
1)把工程中所有与HDF5相关的文件移除(.h,.cpp,.hpp)
2)把文件中包含HDF5相关的头文件,cpp文件注释
3)把与hdf5相关的函数注释,或者在函数体内设置为空
ok,做到此,不要忘了去工程设置中”连接器–>输入“把相应的lib文件去除
注释的部分代码(sgd_solvers.cpp)比如:
感谢大家阅读!