2016-09-26 31 views
3

n個のクラスに対してマルチラベル画像分類タスクを実行したい。 私が持っているまばらなラベル各画像のベクトルと各ラベルベクトルの各次元は、現在、このようにエンコードされている:TensorFlowでスパースラベルを使用したマルチラベル画像分類?

1.0 - 偽>ラベル - >ラベル真/画像は、このクラス

-1.0に属し/イメージはこのクラスに含まれていません。

0.0 - >欠落値/ラベル

例:V = {1.0、-1.0,1.0、0.0}

この例のモデルV対応する画像が分類されるべきであることを、学ばなければなりません第1クラスと第3クラス。

私の問題は現在、欠損値/ラベルをどのように処理するかです。私は問題を通じて検索し、この問題を発見した: tensorflow/skflow#113 found here

そうでmultilable画像分類を行うことができます: tf.nn.sigmoid_cross_entropy_with_logits(logits、ターゲット、名前=なし)

しかしTensorFlowは排他的な分類に使用されるスパースソフトマックス、この誤差関数があります。 tf.nn.sparse_softmax_cross_entropy_with_logits(logits、ラベル、名前=なし)

をだから、まばらなシグモイドクロスエントロピーのようなものがありますか? (何かを見つけることができませんでした)、または何か提案がありますか?疎なラベルでマルチラベル分類の問題をどうやって処理できますか?

+0

私はあなたの質問(テンソルフロー/ skflow#113が見つかりました[ここ](https://github.com/tensorflow/skflow/issues/113))で述べた問題を調べました。しかし、私はこれまでにマルチラベルの分類を行い、 'tf.sigmoid_cross_entropy_with_logits()'関数を使っていました。しかし、なぜあなたは-1.0が必要なのか分かりません。価値の欠如の意味この-1は、シグモイドクロスエントロピーの勾配を導出する際に多くの意味を持ちます。 – Kashyap

答えて

0

最初に、データの欠落の意味を知りたいと思いますか?あなたのケースでは、ミスと偽の違いは何ですか?

次に、このようなデータを表現するのは間違っていると思います。関連性のない情報が、同じ次元で表現しようとしています。 (もしそれが間違っているか真実ならそれはうまくいく)

あなたのクラスのそれぞれについて、それが良いか、紛失しているか、または偽である確率を表現する方が良いでしょうか。あなたのケースのVで

= [(1,0,0)、(0,0,1)、(1,0,0)、(0,1,0)]

+0

シグモイドはバイナリ分類のためのものです。 – rAyyy

0

OK! あなたの問題は、私が思っている欠けているデータをどう扱うかについてです。

だから私は、あなたは間違いなくちょうど0.5に欠落データのためのターゲットを変更tf.sigmoid_cross_entropy_with_logits()

を使うべきだと思います。 (偽の場合は0、真の場合は1)。 私はこのアプローチを試したことはありませんが、ネットワークをあまりにも偏らせることなく学習する必要があります。

+0

ありがとう、私はそれを試してみます!:) – ZCDEV

+0

それはどのように動作するか教えてください;) – rAyyy

+0

これは疎なデータではうまく機能しませんでした。紛失はきれいになりましたが、正確ではありません。なぜなら、ラベル/クラスが存在しているのではなく、存在していないと予測することが良いからです。偽陰性 – Rusty

0

Iは、1秒のために正の重み付き損失関数としてweighted_cross_entropy_with_logitsを用います。

私の場合、すべてのラベルは同じように重要です。しかし、0は、1よりも何らかのラベルの価値として現れる可能性が10倍高かった。

だから私は、前述の損失関数のpos_weightパラメータを呼び出すことで、すべて1の重量を量りました。私は10のpos_weight(=正の値の重み)を使用しました。ところで、私はpos_weightを計算するための戦略はお勧めしません。私はそれが手元のデータに明示的に依存すると思います。余分な重量値を除くすべてに乗算

logitsと実際のラベル= 1、 weighted_cross_entropy = pos_weight * sigmoid_cross_entropy

加重交差エントロピー場合は、logitsシグモイドクロスエントロピーと同じですは、正の実数値であるです。理論的には、ジョブを実行する必要があります。私はまだ性能を最適化するために他のパラメータをチューニングしています。後でパフォーマンス統計で更新されます。

関連する問題