• Caffe 单独测试添加的layer


    之前那个博客记录了如何实现一个自己的层,这篇教你如何进行层的调试。

    首先把你在caffe/src/caffe/layers中你自己层的cpp代码copy到caffe/src/caffe/test中

    然后改名(因为我看那个目录里面命名都是这样命名的):

    接着就按照这篇博客的做:http://www.cnblogs.com/louyihang-loves-baiyan/p/5260863.html

    当你添加一个新的layer后,需要测试添加的layer是否正确:

      首先make all或者make生成头文件和实现文件

      接着make test生成所有的测试文件

      最后make runtest跑你所有的测试文件

    第一次make的时候会把所有的文件进行编译链接,如下图:

    之后的make都只编译链接新的文件,下图是没有新的文件下做的make:

    make test也是同样的:

    下面两张图是make test过程中的终端显示,cxx代表c++编译器,可以看到在编译这些cpp文件,编译生成的文件都放在.build_release目录下,这是个隐藏目录,并且如果你不make test,是不会生成的

    但make runtest就不同,每次都会跑所有的test例子

    make runtest跑所有的例子非常耗费时间,那篇博客就教你怎么只runtest你新添加的层。

    下图是原本caffe/src/caffe/test目录下放的一些源代码,发现只有test_im2col_kernel.cu这一个是cuda代码,其他都是cpp。不过这证明test既可以test  cpp代码,也可以cuda代码。

    这是test生成的可执行文件,那个cuda代码变成了test_im2col_kernel.testbin

    这是我按照博客写的3个层的runtest:

    后两个都是caffe自带的层,第三个就是那个自带的cuda程序

    这是第二个runtest的情况

    这是第三个runtest的情况

    没看出两者有什么区别,只是可以看到第二个的测试例子既在cpu上跑了,也在gpu上跑了。

    src/caffe/test下的test文件应该是单独写,我自己是直接把实现的layer放进去,这本身就不正确。

    还有我的layer写了注册的宏,再编译的时候就报你已经注册了。因为你之前编译layer层的时候已经注册过一次了。

  • 相关阅读:
    python paramiko模块学习分享
    中国大数据市场规模分析及预测
    中国大数据市场规模分析及预测
    显著性水平 置信度 置信区间 实例讲解
    显著性水平 置信度 置信区间 实例讲解
    加密算法
    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'qingmu' for key 'PRIMARY'
    spring Security的自定义用户认证
    spring的面试题
    solr和ElasticSearch(ES)的区别?
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7735714.html
Copyright © 2020-2023  润新知