に私はnumpyの中で、以下の機能を実現していEXPのためのオーバーフローエラーの回避:はnumpyの
def weak_softmax(a):
b=np.exp(a)
return b/(1+np.sum(b))
配列a
のサイズが小さいですが、エントリは時々1000
として多分同じ大きさ、大きなものとなります。だから私は、理由は指数関数でオーバーフローの非常に多くの場合、次のエラーが発生します:
a=np.array([1000,1000])
a=weak_softmax(a)
上記のコードはベクトルa=[nan nan]
を返すと、次の警告発生します
Warning: overflow encountered in exp
をする任意の巧妙な方法はありますこの問題を回避しても、配列b
を意図した通りに返していますか?これは、b
のすべてのエントリが1つしかないためです。私は、この問題をいくつかのトリックを使用して回避することが可能でなければならないと感じています。
'a = np.array([1000、1000])'の場合の望ましい結果は何ですか? 〜 '[1/2、1/2]'? – unutbu
softmaxに1があるはずですか? – user2357112
@ user2357112:これは正確にsoftmaxではありません。だから私はそれを弱いsoftmaxという名前にした。 softmax用にpythonに組み込まれた機能はありますか? – pikachuchameleon