スカラー変数xの場合、Python で数値的に安定したシグモイド関数を書き留める方法を知っています。
def sigmoid(x):
if x >= 0:
return 1. / ( 1. + np.exp(-x) )
else:
return exp(x) / ( 1. + np.exp(x) )
スカラーのリストについては、たとえば 、事前z = [x_1, x_2, x_3, ...]にそれぞれの符号がわからない場合x_i、上記の定義を一般化して試すことができます。
def sigmoid(z):
result = []
for x in z:
if x >= 0:
result.append(1. / ( 1. + np.exp(-x) ) )
else:
result.append( exp(x) / ( 1. + np.exp(x) ) )
return result
これはうまくいくようです。ただし、これはおそらく最もpythonicな方法ではないと思います。「清潔さ」の定義をどのように改善すればよいですか? たとえば、内包表記を使用して関数定義を短縮する方法はありますか?
SOで同様の質問が見つからないため、これが尋ねられた場合は申し訳ありません。お時間をいただき、ありがとうございました。