問題タブ [pycaffe]
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 - いくつかのパラメータでカフェモデルを再構築する方法は?
疎行列に格納されたバージョンのニューラル ネットワークがあるという問題に遭遇しました。これは、いくつかのパラメーターと、それがどのレイヤーに属し、どの場所に属するかなどのインデックスしかないことを意味します。これらの情報と a を使用して python.Thanksprototxt
で再構築するにはどうすればよいですかcaffemodel
machine-learning - Caffe でレイヤーを取得する方法
オブジェクトが与えられたcaffe.Net
場合、特定のレイヤーにアクセスする最良の方法は何ですか?
今のところ、それらを反復処理する方法しか考えていませんが、これはあまり役に立ちません:
neural-network - 分類に Caffe を使用するときに、より一般化されたラベルを使用する方法
分類のために Caffe で事前トレーニング済みの AlexNet を使用しています。'synset_words.txt'
ただし、分類からの出力は、ファイルからの約 1000 クラスです。より一般的なクラスを使用する方法はありますか?
たとえば、写真の犬の種類を出力する代わりに、出力を「犬」にしたいだけです。
クラスに階層があることは知っていますが、その階層を取得して、それを使用してより一般的なラベルを取得する方法はありますか?
ありがとう :)
python - Homebrew によるビルド ブーストのハング
OS X 10.11 で Caffe を実行しようとしていますが、ガイドが推奨するように、自作を介してソースからビルド ブーストをビルドするのに問題があります。コマンドラインツール、自作(自作経由でインストールされたpythonおよびpython3)、およびガイドにリストされているすべての依存関係がインストールされた(protobufが正常に構築された)OS Xの新規インストールがあります。MKL と CUDA 7.5 を使用しています。コマンドを実行した後
インストール スクリプトが実行され、構成が表示され、「... 13743 ターゲットを更新しています...」と表示され、一連のファイルがコピーされ、「... 13743 ターゲットが更新されました...」と表示されます。
その後、ハングします。現在約 2 時間経過しており、Activity Monitor には Ruby プロセスが CPU の約 85% を使用しており、約 10% の CPU がユーザーによって使用されていることが示されています。gcc プロセスはありません。ここに完全なログをアップロードしました。私はただせっかちなのですか?OS X の新規インストールでも同じ結果が得られます。
python - カフェ python マニュアル sgd
関数を使用する代わりに、caffe python で手動で python の重みを更新する SGD 機能を実装しようとしていsolver.step()
ます。目標は、実行後に重みの更新を一致solver.step()
させることと、重みを手動で更新することです。
セットアップは次のとおりです。 MNIST データを使用します。Solver.prototxt のランダム シードを次のように設定しますrandom_seed: 52
。確認しmomentum: 0.0
てbase_lr: 0.01
、、、lr_policy: "fixed"
。上記は、SGD の更新方程式を簡単に実装できるようにするためです (モメンタム、正則化などは使用しません)。方程式は単純です: W_t+1 = W_t - mu * W_t_diff
次の 2 つのテストがあります。
Test1: caffe の forward() と backward() を使用して、前方伝搬と後方伝搬を計算します。重みを含む各レイヤーについて、次のことを行います。
次に、重み/バイアスを次のように更新します。
これを5回繰り返します。
Test2 : caffe's を実行しますsolver.step(5)
。
さて、私が期待しているのは、2 つのテストが 2 回の反復後にまったく同じ重みを生成することです。
上記の各テストの後に重み値を保存し、2 つのテストで重みベクトル間のノルム差を計算すると、それらがビット正確ではないことがわかります。私が見逃しているかもしれない何かを誰かが見つけることができますか?
以下は、参照用のコード全体です。
重みを 2 つのテストと比較する最後の行は、次の結果を生成します。
after iter 5 : weight diff: 0.000203027766144 and bias diff: 1.78390789051e-05
この差は0.0になると予想しています
何か案は?
python - 事前トレーニング済みの VGG-16 モデルを使用したカフェ形状のミスマッチ エラー
私は PyCaffe を使用して、VGG 16 層ネットワークに触発されたニューラル ネットワークを実装しています。GitHub ページから入手できる事前トレーニング済みのモデルを使用したいと考えています。通常、これはレイヤー名を一致させることで機能します。
私の"fc6"
レイヤーでは、train.prototxt ファイルに次の定義があります。
VGG-16 デプロイ アーキテクチャの prototxt ファイルは次のとおりです。prototxtの は私のものと同じであることに注意してください"fc6"
(学習率を除いて、それは無関係です)。また、私のモデルでも入力がすべて同じサイズであることに注意してください: 3 チャネル 224x224px 画像。
私はこのチュートリアルをかなり厳密にフォローしてきましたが、問題を引き起こしているコードのブロックは次のとおりです。
1 行目でソルバーの prototxt を読み込み、2 行目で事前トレーニング済みモデルから重みをコピーします ( VGG_ILSVRC_16_layers.caffemodel
)。ソルバーを実行すると、次のエラーが発生します。
その要点は、彼らのモデルはレイヤーのサイズが1x1x4096であると想定しているのに対し、私のものはちょうど4096であるということです。しかし、これを変更する方法がわかりませんか?
ユーザーの Google グループでこの回答を見つけて、コピーする前に事前トレーニング済みのモデルを再形成するためにネット手術を行うように指示しましたが、それを行うにはlmdb
、元のアーキテクチャのデータ層からのファイルが必要ですが、それは持っていません (それはネット手術スクリプトを実行しようとするとエラーがスローされます)。
deep-learning - prototxt でバッチ サイズ 1 を使用する場合と、pycaffe でバッチ サイズを 1 に強制する場合の結果の不一致
レイヤに手動で変更を加えてMNISTの例を実行しています。トレーニング中はすべてがうまく機能し、最終的なテスト精度は ~99% に達しました。私は現在、pycaffe を使用して python で生成されたモデルを操作しようとしており、ここに記載されている手順に従っています。混同行列を計算したいので、LMDB からテスト画像を 1 つずつループしてから、ネットワークを実行しています。コードは次のとおりです。
これが私のネットワーク定義prototxtです
テスト バッチ サイズは 100 であるため、Python コードで形状を変更する必要があります。ここで、テスト バッチ サイズを 1 に変更したとします。まったく同じ Python コードが、異なる (そしてほとんど正しい) 予測クラス ラベルを出力します。したがって、バッチ サイズ 1 で実行されているコードは、バッチ サイズ 100 がひどいのに対し、最大 99% の精度で期待される結果を生成します。ただし、Imagenet pycaffe チュートリアルに基づいて、何が間違っているのかわかりません。最後の手段として、テスト用にバッチ サイズ 1 の prototxt のコピーを作成し、それを Python コードで使用して、トレーニング中に元のファイルを使用することができますが、これは理想的ではありません。
また、バッチサイズ1でうまく機能する理由が説明されていないため、前処理の問題ではないと思います。
任意のポインタをいただければ幸いです!
python - Pythonを使用したLMDBデータのマトリックスとしてのラベル
ラベルがスカラーではなく、各ラベルが (1,K) ベクトルで、K がクラスの数である Python で lmdb データを作成したいと考えています。より具体的には、ラベル ベクトルには、1 の対応するクラス インデックスを除いて、どこでもゼロがあります。
Python で次のコードをテストしました。
しかし、上記のようにnumpy (1,k) ベクトルであるこのエラーTypeError: only length-1 arrays can be converted to Python scalars
が発生しました。y[i]
また、カフェがそのような形式のラベルを受け入れるかどうかも疑問に思っています。
どんな助けでも大歓迎です