Softmaxオーバーフロー[終了]


10

CourseraでのAndrew Ngの次のコースを待っている間に、Pythonで最後のレイヤーにsoftmax関数を使用して分類子をプログラミングし、さまざまな確率を得ようとしています。ただし、CIFAR-10データセット(入力:(3072、10000))で使用しようとすると、指数を計算するときにオーバーフローが発生します。確かに、私は5000、10000または25000のような数字を持っています。

私はすでに2つのことを試しました:

  • 指数を計算する前に定数をマトリックスに減算しますが、数値間に大きな違いがあるため、それを行うことはできません。
  • 行列の対数の指数を計算しますが、まだオーバーフローしています。

誰かがこの問題を回避するのを手伝ってくれる?

ありがとうございました

編集:https : //github.com/Kentena/softmax/


数千人がCIFAR10データセットとNNを聴いています。コードがめちゃくちゃになっている可能性があります。見せてもらえますか?
タゴマ2017

はい、投稿を更新してgithubリポジトリを投稿しました。ただし、私のコードにはコメントがありません:/
Dlmss

回答:


16

観察その 任意の定数。

exijexj=ememexijexj=eximjexjm
m

明らかにとは言えませんが、正規化されたバージョンは同じです。あなたの問題は、が大きすぎることです。したがって、softmaxを取る前に、それらすべてから同じ数減算します。をすべてのの最大値に設定する場合があります。exi=eximximmxi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.