2017-09-18 6 views
0

私はtorch-caffe-bindingを使用して、カフェモデルをトーチに変換します。最後に損失レイヤーを削除して他のトーチレイヤーを追加したいのですが、.prototxtファイルのレイヤーを削除し、モデルを "train"して.caffemodelファイルを取得し、トーチにインポートできますか?
モデルはlmdbタイプのデータを使用しています。net:forward(input)を使用してモデルをトレーニングすると、モデルではinputデータを使用する代わりにデータレイヤーで定義されたデータが使用されます。では、lmdbデータを使用するモデルのトレーニング方法を教えてください。
カフェのモデルはいくつかのカスタム層を持っているので、私はトーチでモデルをロードするためにloadcaffeを使用することはできませんトーチに変換するキャフェモデルについてのご質問

答えて

1

あなたがここ3つの問題がある -

  1. をあなたはおそらく、この(トレーニングのために損失層を必要としますあなたは を最小化したいですか?)それで訓練をして、訓練が終わったら トーチに変換する前に原型からそれを削除してください。
  2. データ層を使用するのではなく、lmdbを使用するためには、まずCONV層に あなたの入力を接続する(例えば、 層がコンバージョンであるあなたの最初の非入力を想定したが、あなたが

    layer { 
        name: "input-data" 
        type: "DummyData" 
        top: "data" 
        top: "im_info" 
        dummy_data_param { 
        shape { dim: 1 dim: 3 dim: 224 dim: 224 } 
        } 
    } 
    

    とを持っていると言いますTとしても

    input: "data" 
    input_shape: { 
    dim: 1 
    dim: 3 
    dim: 224 
    dim: 224 
    } 
    

    、次いで

    layer { 
        name: "conv1" 
        type: "Convolution" 
        bottom: "data" --> **here put data instead of input-data** 
        top: "conv1" 
        convolution_param { 
        num_output: 96 
        kernel_size: 3 
        pad: 1 
        stride: 1 
        } 
    } 
    
  3. 彼は、カスタム層、あなたがトーチで同等 実装を見つけたり、独自の
+0

はあなたにたくさんありがとう!私はそれを試してみましょう –

+0

私はprototxtに損失層を除去、コンソール上でそれを実装する必要があります'I0923 20:56:19.437440 23288 net.cpp:200] conv1は後方計算を必要としません.'レイヤーにはsaveメッセージがあります。トーチを使用してトレーニングすることはできません。すべてのレイヤーが逆になる必要がある間に、どのように損失レイヤーを削除することができますか?事前に感謝します。 –

+0

私は 'net = caffe.Net( 'test.prototxt'、 'test.caffemodel'、 'train')を使用すると、あなたの助けのために最後のlayer.thanksに' loss_weight:1'を追加する方法を見つけました。 –

関連する問題