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