2016-12-21 12 views
1

回帰問題にはcaffeを使用していますが、フォーマットをシングルフロートラベルに使用する方法がわかりたいと思います。シングルフロートラベル、LMDBフォーマット、

は今、カフェだけでlmdbデータのint32タイプラベル(Datumlabelの種類であるint32)をサポートしています。
このデフォルトの動作を変更するために、私はcaffeのいくつかのファイルを次のように変更しましたが、問題は残りました。

caffe.proto -> line36 : int32 to float 
convert_imageset.cpp -> line 75 and 77 : int to float 
io.cpp and io.hpp -> all the labels were int , I changed them to float 

結局、私は再びカフェを編集しましたが、動作しません。

誰でもこの問題を解決するには?できるだけ早く解決することが私にとって非常に重要です。

ありがとうございます。

+0

'Datum'の' float_data'フィールドに 'label'を保存してください。 – Dale

+0

http://stackoverflow.com/q/31774953/6281477この投稿は役に立ちます。 – Dale

答えて

1

LMDBデータセットのフロートラベルを強制的に使用してcaffeを動作させて問題を解決することは、あまり良い戦略ではないようです。

代わりに、caffeの"HDF5Data"レイヤーを使用することをお勧めします。 caffeのデータを保存するためにhdf5形式を使用すると、はるかに柔軟で、フロートラベルを持つことができます。

詳細については、this answerを参照してください。

+0

"HDF5Data"を使用するには、現在のバージョンのサイズが制限されており、データを分割する必要があります。つまり、データを分割して分割する必要があります。 –

1

フロートラベルをサポートするように強制する場合は、convert_imageset.cpp line 81も変更する必要があります。
現在、このラインは、int型に文字列を変換するためにatoiを使用しています。

label = atoi(line.substr(pos + 1).c_str()); 

あなたはフロートに文字列を変換するには、ユーザーatofに変換する必要があります:ところで、あなたはまたに選択することができます

label = atof(line.substr(pos + 1).c_str()); 
+1

あなたのお返事ありがとうございます –

+0

@SoodabeZarezadeうれしいです。あなたの答えの1つがうまくいけば、それの横にある "v"アイコンをクリックして受け入れることを検討してください – Shai

+0

質問に記載されているのではなく、この行だけですか? –

関連する問題