次のコードでソフトマックスを実装しようとしました(out_vec
はnumpy
フロートのベクトルです):
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator
ただし、オーバーフロー エラーが発生しましたnp.exp(out_vec)
。そのため、 の上限を (手動で) 調べたところ、は数値であるnp.exp()
ことがわかりましたが、と見なされます。したがって、オーバーフロー エラーを回避するために、コードを次のように変更しました。np.exp(709)
np.exp(710)
np.inf
out_vec[out_vec > 709] = 709 #prevent np.exp overflow
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator
今、私は別のエラーが発生します:
RuntimeWarning: invalid value encountered in greater out_vec[out_vec > 709] = 709
追加した行の何が問題になっていますか? この特定のエラーを調べたところ、エラーを無視する方法に関する人々のアドバイスしか見つかりませんでした。コードでこのエラーが発生するたびに通常の結果が得られないため、単にエラーを無視しても役に立ちません。