2017-02-19 59 views
2

我試圖訪問使用Caffe C++的各個圖層。但是,我無法獲得任何數據:Caffe C++ - 訪問其他圖層中的數據

net_.Forward(); 

std::vector<std::string> layerNames = net_.layer_names(); 
for(int i=0; i<layerNames.size(); i++){ 
    cout << layerNames[i] << endl; 
    std::vector<boost::shared_ptr<caffe::Blob<float> > >& layer = net_.layer_by_name(layerNames[i])->blobs(); 
    cout << layer.size() << endl; 
} 

以上是我使用的方法。即使「數據」層似乎是空的,矢量大小爲0.這裏發生了什麼?

+0

我認爲你正在獲取圖層的內部參數。 ''數據''圖層沒有內部參數,因此您可以爲此圖層獲得零「大小」。您是否爲其他圖層('「Conv」'和「InnrrProduct」圖層)獲得非零大小? – Shai

+0

您應該查看'net_.blobs()'和'net_.blob_names()'。 – Shai

+1

這似乎工作!您可以將其發佈爲答案 – Raaj

回答

0

您的代碼檢查圖層的斑點:這些是網絡的內部參數(可訓練參數)。 "Data"圖層沒有內部參數,因此您得到的blob的size爲零。另一方面,如果你想檢查網絡的數據blob(即輸入和響應),你應該看net_.blob_names()net_.blobs()