2016-11-02 11 views
0

私は2つの入力画像を取得するネットワークを持っています。これらの2つの画像は9クラスのうち複数のクラスに属しています。 Caffeのドキュメントでは、prototxtから直接入力画像を読み込んでいますが、私はC++コードを通して情報をフィードしています。次のように損失層が見えますCaffe SigmoidCrossEntropyLossレイヤーマルチラベル分類C++

input: "data" 
input_shape{dim:20 dim:6 dim:100 dim:100} 

input: "class_label" 
input_shape{dim:20 dim:9} 

次のように

私の入力層に見える私の仮定は、入力ストリームがこの [0 0 1 0 1のように見えるべきであるということである

layer { 
    name: "classes" 
    type: "InnerProduct" 
    bottom: "ip2" 
    top: "classes" 
    param { lr_mult: 1 } 
    param { lr_mult: 2 } 
    inner_product_param { 
    num_output: 9 
    weight_filler { type: "xavier" } 
    bias_filler { type: "constant" } 
    } 
} 


layer { 
    name: "class_loss" 
    type: "SigmoidCrossEntropyLoss" 
    bottom: "classes" 
    bottom: "class_label" 
    top: "class_loss" 
} 

0 1 0 0]、ここで1は画像がクラスに属していることを意味し、0はそれがそうでないことを意味する。

私の2番目の質問は、SigmoidCrossEntropyLossレイヤーの出力(SoftmaxWithLoss出力の可能性など)から何を期待していますか?

答えて

3
  1. 正しいですか:ケースのラベルはバイナリ9ベクトルである必要があります。

  2. 損失層の出力はスカラー損失値です。あなたはネットをトレーニングするときにこの値が減少すると期待するべきです。予測(テスト時間)には、シグモイド損失層をシンプルなシグモイド層に置き換える必要があります。いくつかのシグモイド層の出力は、各項目がそれぞれのクラスの存在の確率を表す9個のベクトルである。 deploy.prototxt
    出力層は次のようになります。本当に便利です

    layer { 
        type: "Sigmoid" 
        name: "class_prob" 
        bottom: "classes" 
        top: "class_prob" 
    } 
    
+0

グレートを、あなたはprototxtファイルは、この場合にどのように見えるかのサンプルを投稿することができ、その後、あなたの答えは、より完全なものになり、私はそれをマークすることができます。 –

+0

'EuclideanLoss'層の確率分布を得ることは可能ですか? @ Shai @Poka Yoke – thigi

+0

@thigiユークリッドの損失によって学ばれた回帰値の確率の意味は何ですか? – Shai

関連する問題