2017-07-15 119 views
0

我已經在caffe(C++)中編寫了一個自定義圖層。在運行此代碼時(訓練使用此圖層的模型),會調用設置圖層(圖層的"LayerSetUp"方法)(通過編寫一段可在硬盤上創建文件並轉儲一些數據的代碼進行驗證)。但是Forward_cpu()Backward_cpu()方法在執行過程中似乎沒有被調用。可能的原因是什麼?未調用Caffe圖層函數

以下是運行模型以輸出使用此自定義丟失圖層的輸出。

... 
I0715 09:23:57.415463 31256 net.cpp:84] Creating Layer loss 
I0715 09:23:57.415472 31256 net.cpp:406] loss <- permute_conv11 
I0715 09:23:57.415482 31256 net.cpp:406] loss <- bbox 
I0715 09:23:57.415495 31256 net.cpp:380] loss -> loss 
I0715 09:23:57.433014 31256 layer_factory.hpp:77] Creating layer loss 
I0715 09:23:57.437386 31256 layer_factory.hpp:77] Creating layer loss 
I0715 09:23:57.438171 31256 layer_factory.hpp:77] Creating layer loss 
I0715 09:23:57.438897 31256 layer_factory.hpp:77] Creating layer loss 
I0715 09:23:57.438989 31256 layer_factory.hpp:77] Creating layer loss 
I0715 09:23:57.440030 31256 net.cpp:122] Setting up loss 
I0715 09:23:57.440052 31256 net.cpp:129] Top shape: (1) 
I0715 09:23:57.440058 31256 net.cpp:132]  with loss weight 1 
I0715 09:23:57.440099 31256 net.cpp:137] Memory required for data: 3146726596 
... 

爲什麼損耗層被調用多次(在上面的代碼段)的原因是,我用定製層內的層來調用其它層,("Softmax"類型的SOFTMAX,"Sigmoid"類型的乙狀結腸的reshape_softmax鍵入"Reshape",reshape_sigmoid「重塑」,另一個"Reshape"層。所有這些5層上的輸入斑點的不同部分起作用以這種定製層)

Forward_cpu()方法似乎並不在所有同時培養所調用的模型。可能是什麼問題,我該如何解決?

回答

2

在這種情況下很可能調用Forward_gpu()方法。爲了克服這個錯誤,請確保您沒有<your_custom_layer>.cu文件實現Forward_gpu和Backward_gpu()

+0

是的,這是問題!非常感謝 – harman