在theano中按行规范化矩阵
normalize a matrix row-wise in theano
假设我有一个大小为 n_i x n_o
的矩阵 N
,我想按行对其进行归一化,即
每行的总和应该是一个。我怎么能在theano中做到这一点?
动机:对我来说使用 softmax returns 反向错误,所以我尝试通过实现我自己的 softmax 版本来回避它。
看看以下内容是否对您有用:
import theano
import theano.tensor as T
m = T.matrix(dtype=theano.config.floatX)
m_normalized = m / m.sum(axis=1).reshape((m.shape[0], 1))
f = theano.function([m], m_normalized)
import numpy as np
a = np.exp(np.random.randn(5, 10)).astype(theano.config.floatX)
b = f(a)
c = a / a.sum(axis=1)[:, np.newaxis]
from numpy.testing import assert_array_equal
assert_array_equal(b, c)
或者您也可以使用
m/m.norm(1, axis=1).reshape((m.shape[0], 1))
假设我有一个大小为 n_i x n_o
的矩阵 N
,我想按行对其进行归一化,即
每行的总和应该是一个。我怎么能在theano中做到这一点?
动机:对我来说使用 softmax returns 反向错误,所以我尝试通过实现我自己的 softmax 版本来回避它。
看看以下内容是否对您有用:
import theano
import theano.tensor as T
m = T.matrix(dtype=theano.config.floatX)
m_normalized = m / m.sum(axis=1).reshape((m.shape[0], 1))
f = theano.function([m], m_normalized)
import numpy as np
a = np.exp(np.random.randn(5, 10)).astype(theano.config.floatX)
b = f(a)
c = a / a.sum(axis=1)[:, np.newaxis]
from numpy.testing import assert_array_equal
assert_array_equal(b, c)
或者您也可以使用
m/m.norm(1, axis=1).reshape((m.shape[0], 1))