1. ホーム
  2. python

[解決済み] tensorflow.nn.softmaxは何をするのですか?

2022-02-28 13:02:07

質問

私はcourseraのtensorflowコースを受講していますが、以下のコードが理解できません...簡単な英語で説明してください。

以下はコードです。

model = tf.keras.models.Sequential([tf.keras.layers.Flatten(), 
                                tf.keras.layers.Dense(128, activation=tf.nn.relu), 
                                tf.keras.layers.Dense(10, activation=tf.nn.softmax)])

コース説明にあるtf.nn.softmaxが以下の説明で何をするのか知りたいのですが、私にはよくわかりません。

シーケンシャル。ニューラルネットワークの層の順序を定義します。

平らにする。以前、画像をプリントアウトしたとき、正方形だったのを覚えていますか?Flattenは、その正方形を1次元の集合に変換するだけです。

デンス ニューロンの層を追加する

ニューロンの各層は、それらに何をすべきかを指示する活性化関数が必要です。たくさんのオプションがありますが、今はこれらを使ってください。

Reluの効果的な意味は "もしX>0ならXを返し、そうでないなら0を返す"。 -- つまり、0以上の値だけをネットワークの次の層に渡すということです。

ソフトマックスは一連の値を受け取り、効果的に最も大きな値を選ぶので、例えば最後の層の出力が次のようになる場合 [0.1, 0.1, 0.05, 0.1, 9.5, 0.1, 0.05, 0.05, 0.05] を使用すると、最大の値を探すのに苦労することがなくなり、その値を [0,0,0,0,1,0,0,0,0] -- 目標は、コーディングの手間を省くこと!

解決方法は?

以下はそのドキュメントです。 https://www.tensorflow.org/api_docs/python/tf/nn/softmax

基本的に、ソフトマックスは分類に適しています。Softmax(X) <0.5 ならば0に等しく、Softmax(X)>=0.5 ならば1に等しいというように、任意の数値を受け取り、0か1のいずれかの出力にマッピングします(例えば)。

こちらの記事でもシグモイド関数とソフトマックス関数について解説していますので、ご覧になってみてください。グラフが重要です。また、googleの画像検索で関数のグラフをいくつか見ることができます。

http://dataaspirant.com/2017/03/07/difference-between-softmax-function-and-sigmoid-function/