chainer.functions.
log_softmax
(x)[source]¶
チャンネルごとの対数-ソフトマックス関数。
この関数は第2軸に沿ったソフトマックスの対数を演算します。
第2軸に添って
c=(c1,c2,…,cD)c=(c1,c2,…,cD)
をx
のスライスとします。
各スライス毎に、下記のように定義されている関数f(c)の対数を演算します。
このメソッドは 理論的には log(softmax(x))
と同等ですが、こちらのほうが安定しています。
log(softmax(x))
では x
が小さすぎるとき、下位桁あふれが発生することがあります。これはsoftmax(x)
が 0
を返す可能性があるためで、 log_softmax
メソッドのほうが安定しています。
Parameters: |
x (Variable or numpy.ndarray or cupy.ndarray ) – 入力値。A-n次元(n≧2)のfloat配列。 |
---|---|
Returns: | 出力値。A-n次元(n≧2)のxと同じshapeをもつfloat配列。 |
Return type: | Variable |
Example
>>> x = np.array([[0, 1, 2], [0, 2, 4]], 'f')
>>> x
array([[ 0., 1., 2.],
[ 0., 2., 4.]], dtype=float32)
>>> F.log_softmax(x).data
array([[-2.40760589, -1.40760589, -0.40760589],
[-4.14293146, -2.14293146, -0.14293146]], dtype=float32)
>>> np.allclose(F.log_softmax(x).data, F.log(F.softmax(x)).data)
True