ソフトマックス層で2​番目に大きな確率を取​るラベルを確認する方​法はありますか?

1 回表示 (過去 30 日間)
Tamu
Tamu 2019 年 10 月 2 日
コメント済み: Kazuya 2019 年 10 月 3 日
分類用の畳み込みニューラルネットワークに関する質問になります。
入力データに対してソフトマックス層では最も大きな確率をとるラベルを出力するようになっていると思うのですが、
2番目に大きな確率をとるラベルを確認する方法はありますでしょうか。
(例)数字8のイメージデータに対して、ソフトマックス層でラベル「8」を出力した時に2番目に大きな確率をとるラベル「9」を確認する。
ご教示ください。
よろしくお願いいたします。

採用された回答

Kazuya
Kazuya 2019 年 10 月 2 日
ラベルの「確認」がどんな処理か分かりませんが、泥臭い方法でよければ思いつきます。
まず提示いただいた例題ですと
最後の
YPred = classify(net,imdsValidation);
の代わりに
scores = activations(net,imdsValidation,'softmax','OutputAs','columns');
と実行すれば各ラベル毎の確率にあたるモノを出力できます。
ここから例えば
[sortedScore,I] = sort(scores,'descend');
とソートします。
第二出力 I を追うことで、2番目に数値が高かったラベルを認識できます。
例えば
labels = net.Layers(15).Classes;
firstPred = labels(I(1,:)); % 1番目ラベル
secondPred = labels(I(2,:)); % 2番目のラベル
といった具合です。
isequal(firstPred,YPred)
とすれば
YPred = classify(net,imdsValidation);
で計算された YPred と firstPred が同値であることが確認できます。
  2 件のコメント
Tamu
Tamu 2019 年 10 月 3 日
教えて頂いた方法で確認できました。
ご丁寧に教えていただきありがとうございます!
Kazuya
Kazuya 2019 年 10 月 3 日
よかったです!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeイメージを使用した深層学習 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!