2017-03-19 5 views
2

バイナリ分類のためにvgg-16を微調整します。私は損失関数としてsigmoidLoss層を使用しました。私はバイナリ分類モデルをテストするPyCaffe出力層

アウト= net.forwardを()する必要があり

マイ疑問である:

モデルをテストするために、私は、画像付きモデルをロードして使用して出力を得ているPythonのファイルを符号化SigmoidまたはSigmoidLossレイヤーから出力を取り出します。 2層の違いは何ですか?

私の出力は、実際に入力された画像であるクラス1の確率であろう。**

答えて

1

の出力を見てしなければならない、あなたは元prototxtを変更することで、prototxt別の展開を作成することができます。続き

は同じ

  • 我々は、もはや私たちのデータにラベルを提供している分類の場合と同様に、訓練のために使用されなかったデータ層を削除するための手順です。
  • データラベルに依存するすべてのレイヤーを削除します。
  • データを受け入れるようにネットワークを設定します。
  • ネットワークに結果を出力させます。

あなたがここにこの詳細を読むことができます:deploy prototxtエルス

を、あなたは
を追加することができます{ 相:TRAIN }含まれている場合、テストそれが使用されていないように、あなたのSigmoidWithLoss層に

をネットワーク。予測を行うには、Sigmoidレイヤの出力を確認するだけです。

1

SigmoidWithLoss層は、グランドトゥルースラベルw.r.t損失を表すバッチあたり単一番号を出力します。

一方、Sigmoid層は、バッチ内の入力ごとに確率値を出力します。この出力ではないため、グラウンドトゥルースラベルを計算する必要があります。あなたが入力ごとに確率を探しているなら

、あなたはテストセットに予測を行うためにSigmoid

+0

グランド真理値ラベルがないため、SigmoidWithLossレイヤの出力はテスト中に何を表しますか? –

+0

@ ShivamDuggal参照[この回答](http://stackoverflow.com/a/39018076/1714410)。 '' SigmoidCrossEntropyLoss ''レイヤーをグラウンドトゥルースなしで持つことはできません。レイヤ**には2つの入力が必要です**。 – Shai

関連する問題