2017-02-19 5 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

私はあなたが層の内部パラメータを得ていると思います。 '' Data ''層には内部パラメータがないので、この層の' size'値はゼロになります。他のレイヤー( '' Conv "'と '' InnrrProduct "'レイヤー)のサイズがゼロでないのですか? – Shai

+0

'net_.blobs()'と 'net_.blob_names()'を見てください。 – Shai

+1

それはうまくいくようです!あなたは答えとして投稿することができます – Raaj

答えて

0

あなたのコード検査層のブロブ:これは、ネットの内部パラメータ(訓練可能なパラメータ)です。 "Data"レイヤーに内部パラメータがないため、取得したBLOBのsizeはゼロです。

一方、ネットのデータブロブ(入力と応答)を検査する場合は、net_.blob_names()net_.blobs()を調べる必要があります。

関連する問題