🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

1回答

1804閲覧

GoogLeNetの出力について

ketobugyo

総合スコア4

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/12/13 05:20

GoogLeNetを改変して3クラスの画像分類をしようと思っています。

https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/train_val.prototxt
こちらを参考にしているのですが、エラーが出たのでnum_outputを1000→3に変更したのですが、まだエラーが出るのでtop_k: 5→3に変更しました。

かなり初歩的な質問にはなると思うのですが、まずtop_kとは何のパラメーターなんでしょうか。
また、この2つを変更して動くようにはなったのですが、

Train net output #0: loss1/loss1 = 0.00388206 (* 0.3 = 0.00116462 loss)
Train net output #1: loss1/top-1 = 1
Train net output #2: loss1/top-5 = 1
Train net output #3: loss2/loss2 = 0.00339478 (* 0.3 = 0.00101843 loss)
Train net output #4: loss2/top-1 = 1
Train net output #5: loss2/top-5 = 1
Train net output #6: loss3/loss3 = 0.00537069 (* 1 = 0.00537069 loss)
Train net output #7: loss3/top-1 = 1
Train net output #8: loss3/top-5 = 1

outputが8つ表示されます。他のモデルは1つだったのですが、なぜ8つも表示されるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

top_k スコアの意味

リファレンスに記載があります。

Caffe | Accuracy and Top-k

予測した確率が高い上位 k 個のラベルに正解のラベルが含まれている割合を top_k スコアといいます。
top_1 スコアの場合、予測した最も確率が高いラベルが正解ラベルと同じ割合
top_5 スコアの場合、予測した確率が高い上位5個に正解ラベルが含まれている割合

となります。ImageNet のコンペティションでは、top_1, top_5 スコアで評価します。

outputが8つ表示されます。他のモデルは1つだったのですが、なぜ8つも表示されるのでしょうか。

8ではなく、9個ですね。
出力層が3つのあるので、3つの出力層それぞれの loss, top_1 スコア, top_5 スコアが表示されるので、合計9個です。

GoogleNet (inception v1) の構造は、論文を参照ください。

1409.4842.pdf

num_outputを1000→3に変更したのですが、まだエラーが出るのでtop_k: 5→3に変更しました。

3クラスしかないなら、top_1, top_2, top_3 スコアまでは定義できるが、k >= 4 以上だと、top_k スコアが定義できなくなるので、エラーとなったのでしょう。
k <= クラス数にする必要があると思います。
ちなみに3クラスしかない中、top_3 にしたので、確率が高い上位3つの中に必ず正解ラベルが含まれるわけなので、top_3 = 1 になっている理由がわかるかと思います。

投稿2019/12/13 05:31

編集2019/12/13 05:36
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ketobugyo

2019/12/15 05:53

公式HPに載っていたんですね。勉強不足ですみません。 Test net output #0: loss1/loss1 = 2.69788 (* 0.3 = 0.809363 loss) Test net output #1: loss1/top-1 = 0.54574 Test net output #2: loss1/top-5 = 1 Test net output #3: loss2/loss2 = 2.77393 (* 0.3 = 0.832179 loss) Test net output #4: loss2/top-1 = 0.53874 Test net output #5: loss2/top-5 = 1 Test net output #6: loss3/loss3 = 2.84096 (* 1 = 2.84096 loss) Test net output #7: loss3/top-1 = 0.53642 Test net output #8: loss3/top-5 = 1 Testの結果も上記のように8つ表示されるのですが、これもLossと同様ということでしょうか。
tiitoi

2019/12/15 07:58

#0 ~ #9 なので、8個ではなく9個です。 3つの出力層があり、各層の top1 スコア、top5 スコア、損失関数の値が出力されるので、合わせて9個です。 Test も Train と同様です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問