問題タブ [lmdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python lmdb で MDB_NOTLS モードを設定する方法
lmdb docs では、「MDB_NOTLS モードが排他的に使用されます。これにより、読み取りトランザクションがスレッド間で自由に移行し、単一のスレッドが複数の読み取りトランザクションを維持できます。これにより、gevent を使用する場合など、読み取りトランザクションをほとんど気にせずに使用できます。」
しかし、Pythonで設定する方法のマニュアルはありません。
私は試した:
そうですか?
neural-network - フィーチャをテキスト ファイルに抽出する
http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.htmlの手順に従って、 トレーニング後に新しい画像から特徴を抽出します。
最終的に data.mdb ファイルを取得します。
簡単に操作できるように、フィーチャを txt ファイルに書き込むことをお勧めします。
私はグーグルでいくつかのコードを見つけましたが、うまくいきませんでした。さらに、生成された data.mdb ファイルは、Mac で mdb オープナー アプリを使用して開くと、テーブルがまったく表示されません。
抽出した特徴をテキスト ファイルに書き込む簡単な方法、または画像ごとの実際の値を確認できるように mdb ファイルを操作する簡単な方法はありますか?
python - Caffe: Python から LMDB を読み取る
.mdb ファイルを生成する caffe を使用して特徴を抽出しました。次に、Pythonを使用して読み取り、読み取り可能な数値として表示しようとしています。
これにより、判読不能で壊れた文字の非常に長い行が出力されます。
次に、次を返す int(value) を出力してみました。
float(value) は次のようになります。
これは lmdb ファイル自体の問題ですか、それともデータ型の変換に関係していますか?
c++ - lmdb なしの Caffe+Opencv
Caffe を使用する場合、画像を含むトレーニング データセットを作成するには、lmdb などの特別な形式でデータベースを作成する必要がありますが、たとえば、画像のバッチを Caffe に渡すオプションはありますvector<cv::Mat>
か?
明確にするために、メモリに収まらない大量の画像を処理できるソリューションを探しています (ただし、1 つのトレーニング バッチ (たとえば 50 個の画像を含む) をメモリに格納できると仮定します)。
deep-learning - Caffe によるマルチラベル分類
GoogLeNet を微調整して、Caffe でマルチラベル分類を行いたいと考えています。すでに単一ラベルの分類に微調整していますが、マルチラベルへの移行はまだできません。
私が行っている主な手順は次のとおりです。
データとグラウンド トゥルース用の LMDB を作成する
こことここでコードを変更して、1 つの LMDB をデータで作成し、もう 1 つをグラウンド トゥルースで作成します。
SoftmaxWithLoss を SigmoidCrossEntropyLoss に置き換える
train_val.prototxt を更新して、SoftmaxWithLoss レイヤーを SigmoidCrossEntropyLoss に置き換え、両方の DB が読み込まれるようにデータ レイヤーを設定します。単一ラベル分類問題で行ったように、学習率パラメーターを設定します。
この手順は機能しているようです。データフロー、および Solver.step(1) を実行することが可能です。データとラベルが正しくロードされていることを確認するために、数式を使用して明示的に損失を計算し、Caffe と同じ結果を得ました。
問題
ネットワークが収束しません。数百回の反復を実行すると、さまざまなクラスのそれぞれがクラス母集団の平均になります。つまり、クラス a の母集団に 0.35 個の 1 と 0.65 個の 0 がある場合、ネットワークは、真のラベルに関係なく、観測ごとに ~0.35 の分類確率に収束します。
考えられるエラー 1
問題は、GoogLeNet の事前トレーニング済みモデルが画像から学習できるように、画像を caffe に正しくロードできなかったためだと思われます。これまでの私の以前の経験は、完全に機能する convert_imageset です。現在、shelhamer コードを使用して画像を LMDB に保存しています。
画像を読み込むときに、データ層の平均を正規化します。それは正しいと思いますか?それを行う別の方法はありますか?
考えられるエラー 2
また、train_val.prototxt の定義が間違っている可能性もあります。SoftmaxWithLoss -> SigmoidCrossEntropyLoss を切り替える以外に必要なことはありますか?
どんな助けでも大歓迎です!ありがとう!
c++ - LMDB Seek (カーソルの移動) 読み取りなし
同時にデータを取得せずに (つまり、I/O 負荷を下げる) n 位置だけカーソルを前方に移動できるかどうかを知りたいです。
私は知ってmdb_cursor_get
いますが、と組み合わせて呼び出すたびにディスクからデータを取得するようMDB_NEXT
です。
あなたの助けは大歓迎です!
linux - Windows のデータベースの LMDB 最大サイズ
たとえば、Windows で最大 db サイズを 5G に設定すると、小さなデータを 1 つ挿入しただけでも、最終的な db ファイル サイズは 5G になります。しかし、Linuxでは問題なく動作します。最終的なdbサイズは、挿入するデータの数に関連しています。
最大データベースサイズを設定するために使用したAPIは次のとおりです
rc = ::mdb_env_set_mapsize(env, 5 * 1024 * 1024 * 1024);
Windows と Linux で同じです。Windows では別のことをする必要がありますか?