G
とB
のトレーニング用チャネルしか使用しないでください。入力層を使用しているCaffe?GとBチャネルのみでCaffeを訓練する方法
答えて
あなたはGとBを選択しますあなたの入力の上畳み込み層を追加することができます。
layer {
name: "select_B_G"
type: "Convolution"
bottom: "data"
top: "select_B_G"
convolution_param { kernel_size: 1 num_output: 2 bias_term: false }
param { lr_mult: 0 } # do not learn parameters for this layer
}
あなたはこの層は
をするためのいくつかの net surgery前の重みを設定するための訓練を行う必要がありますnet.params['select_B_G'][0].data[...] = np.array([[1,0,0],[0,1,0]], dtype='f4')
注:は時々カフェにロードされた画像は、チャネル・スワップ・変換を通過している、すなわち、RGB - > BGR、したがって、あなたが選ぶどのチャンネルに注意する必要があります。
私はこのコードをテストしませんでしたが、これを行うには単純なpython層を書きました。あなたは、これが正常に動作します。この
layer {
name: "GB"
type: "Python"
bottom: "data"
top: "GB"
python_param {
module: "MyPythonLayer"
layer: "ExtractGBChannelLayer"
}
}
希望のようImageDataLayer
後層を挿入することができprototxtで
import caffe
class ExtractGBChannelLayer(caffe.Layer):
def setup(self,bottom,top):
pass
def reshape(self,bottom,top):
bottom_shape=bottom[0].data.shape
top_shape=[bottom_shape[0],2,bottom_shape[2],bottom_shape[3]] #because we only want G and B channels.
top[0].reshape(*top_shape)
def forward(self,bottom,top):
#copy G and B channel to top, note caffe BGR order!
top[0].data[:,0,...]=bottom[0].data[:,1,...]
top[0].data[:, 1, ...] = bottom[0].data[:, 0, ...]
def backward(self,top,propagate_down,bottom):
pass
あなたはMyPythonLayer.py
としてこのファイルを保存することができます。
素敵な答え! [Shaiの](http://stackoverflow.com/a/36551710/1714410)に対するこの答えの利点は、その単純さです。しかし、 '' Convolution ''レイヤーインフラストラクチャを使うことはより速くなるかもしれません。 – Shai
これは私が使用したMatlabコードであり、動作します。
caffe.reset_all(); % reset caffe
caffe.set_mode_gpu();
gpu_id = 0; % we will use the first gpu in this demo
caffe.set_device(gpu_id);
net_model = ['net_images.prototxt'];
net = caffe.Net(net_model, 'train')
a = zeros(1,1,3,2);
a(1,1,:,:) = [[1,0,0];[0,1,0]]'; % caffe uses BGR color channel order
net.layers('select_B_G').params(1).set_data(a);
solver = caffe.Solver(solverFN);
solver.solve();
net.save(fullfile(model_dir, 'my_net.caffemodel'));
私が正しく理解していれば、この回答は「スタンドアローン」ではなく、[この回答](http://stackoverflow.com/a/36551710/1714410)のpythonic net surgery部分に取って代わります。私は正しいですか? – Shai
はい。それは正しく、あなたの答えに感謝します。 – user570593
- 1. python wrraper caffeでネットワークを訓練しますか?
- 2. Caffe2でのCaffeの訓練モデルとパラメータを推論に直接使用する方法
- 3. Caffe:訓練されたスナップショットからの復帰がエラーで失敗する
- 4. 訓練されたCaffeモデルをクラスのセットに限定する方法はありますか?
- 5. 畳み込みニューラルネットワーク:それを訓練する方法? (監督なし)
- 6. Kerasで2つの訓練されたモデルを組み合わせる方法
- 7. TensorflowでCNNで画像を訓練する方法
- 8. テンソルフロー訓練なし(変更のみバイアス)
- 9. 訓練用ニューラルネットワーク
- 10. Gensim HDPトピックモデル:コーパスの複数のパスを訓練する方法?
- 11. 私の訓練されたTensorフローモデルをテストする方法
- 12. Theano/lasagne:訓練されたモデルで予測する方法
- 13. Sparkでの訓練されたcrossValidationモデルの読み込み
- 14. matlabでサポートベクターマシンを訓練するには?
- 15. tensorflow:訓練されたモデルを保存/復元する方法
- 16. 画像にOpenCV SVM分類子を訓練する方法
- 17. 訓練されたニューラルネットワークを保存してアクセスする方法
- 18. 訓練されたテンソルフローモデルをロードする方法
- 19. nltkクラシファイアを徐々に訓練する方法
- 20. 訓練されたニューラルネットワークを確認する方法
- 21. Caffe |矩形の形状イメージを訓練するために使用できるネットはありますか?
- 22. CNNを訓練するときに入力word2vecを微調整する方法
- 23. ケラス - 訓練されたレイヤの重みを取得する
- 24. 列の値ごとに別々のモデルを訓練する方法は?
- 25. 訓練されたメタグラフからの重みとバイアス
- 26. テンソルフローでは、DNNLinearClassifier [wide_n_deep_tutorial.py]を使用すると、訓練された履歴モデルを復元し、ベースを訓練する方法
- 27. Googleが開始した訓練されたテンソルフローモデルを読み込む方法は?
- 28. 印刷して訓練パラメータ(重み)を取得する
- 29. CaffeはPythonで常に同じ予測を与えますが、訓練の精度は良いです
- 30. フルバッチ訓練を用いたニューラルネットワークへの手紙画像の訓練
ありがとうございます。 Matlapのためのどんな手掛かり? – user570593
@ user570593何がmatlabにありますか?ネット手術?古いmatlabユーザとして、私はcaffeを扱う際にはPythonに移行することを強くお勧めします。 – Shai
Matlabを使ってどうすればいいのですか? – user570593