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層的時候已經注冊過一次了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM