2016-11-22 20 views
0

私は2D配列を持っており、softmax関数を賢明に適用したいと思います。これは、次のことを試してください。Theanoにsoftmaxを列方向に強制する方法はありますか?

[[ 0.26894142 0.73105858] 
[ 0.00247262 0.99752738] 
[ 0.99752738 0.00247262]] 

操作が賢明な行を適用されていることを意味します。私は次の出力を取得した結果

value = numpy.array([[1.0,2.0], [3.0,9.0], [7.0,1.0]], dtype=theano.config.floatX) 
m = theano.shared(value, name='m', borrow=True) 
y = theano.tensor.nnet.softmax(m) 
print y.eval() 

を。 Theanoにsoftmaxカラムを賢明にさせる方法はありますか?操作が行を適用されていることを意味

答えて

2

賢明行うように設計されたものである

http://deeplearning.net/software/theano/library/tensor/nnet/nnet.html#theano.tensor.nnet.nnet.softmax

あなたの予想される結果を取得する配列を転置。

y = theano.tensor.nnet.T.softmax(m) 

か::

y = theano.tensor.T.nnet.softmax(m) 

参考:http://deeplearning.net/software/theano/library/tensor/basic.html#theano.tensor._tensor_py_operators.T

+0

それは役に立ちましたか?実際の構文は何ですか? – Balzola

0

シンプルなソリューション:テンソルのランクについて

>>> import theano as th 
>>> T = th.tensor 
>>> x = th.tensor.matrix() 
>>> y = T.nnet.softmax(x.T).T 
>>> fn = th.function([x],y) 
>>> fn([[1.,2.],[1.,3.]]) 
array([[ 0.5  , 0.26894143], 
     [ 0.5  , 0.7310586 ]], dtype=float32) 

を転置> =これは推測のビットですTheanoを知りません3、転置は軸を指定する必要があります。

#this perform softmax on 3rd dimension 
x = tensor4() 
T.nnet.softmax(x.transpose(0,1,3,2)).transpose(0,1,3,2) 
関連する問題