一般我们在使用Caffe的时候,可能需要根据自己的任务需求添加一些自定义的Loss,当然这个Loss可以根据自己的需要来添加。比如在这里我添加的是triplet_loss为例
在这里如果我们要添加一个新的loss,建立了相应的头文件和实现文件,在书写测试文件。
如果直接运行
make all
make test
make runtest
虽然make 命令会根据编译文件的时间戳来跳过大部分文件,但是make runtest花的时间会比较长,因为他把所有的test文件都跑了一遍,当我们自己需要添加文件时,并不需要runtest。
这个时候我们需要稍微修改一下makefile,我觉得虽然我们现在不是手写makefile,但是基本的一些makefile的语法规则还是要了解一下的。
根据make命令的格式
make [target]
我们在make 时执行的就是后面的target,因此打开makefile文件
下图是我直接make runtest时的报错,一般都不会那么顺利哒.
因此为了不必要的每次make runtest,我们看一下makefile内部这里要说一下makefile 的格式
target: $(prerequisite)
[tab] [command]
首先我们需要明白make 做的事构建
,对应的是我们IDE中的build,他并不是compile,是准备各种资源配置,为编译做准备,具体的编译还是交给了GCC这样的编译器。
在上面的格式中,首行中的target 目标我们的目标,在我们make runtest
,则会跳转到这个target开始执行,冒号后面跟着的是前置条件,即这个target
要满足的依赖条件第二行是一个tab
键,
当我们在make runtest
之前,我们已经执行了make test
,即会生成test相关的可执行文件,因此在这里我们输入我们相应的.testbin
文件路径,这个应该是在.build_release/test/
目录下,因此我们可以添加一个我们自己的target
如下
这样我们在跑的时候每次make all
,make test
之后直接运行make runtest_triplet
,即直接运行我们需要的test文件,方便我们进一步做测试和修改