10460


Deep Learning Tutorialsのロジスティック回帰を読んでいます。  
<http://deeplearning.net/tutorial/logreg.html>

ロジスティック回帰での尤度関数を計算する部分。

[code]

    -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]), y])
    
[/code]

ここの T.arange についてなのですが  
Theano の arange は Numpy と同じように0〜nのベクトルを作成するのでしょうか？

[code]

    print T.arange(10)
    
[/code]

として、配列が作成されるか確認しましたが ARange.0 と出力され、どのように動作しているのかわかりません。

質問したい点は以下です。  
- theano.tensor.arangeの動作について  
- printした際の出力の意味

よろしくお願いします。


CC BY-SA 3.0
2015-05-19T13:54:04.107
10383
2015-05-21T09:15:32.157
2015-05-19T14:04:20.247
3639
8661
question
python 機械学習
Theanoのarangeについて


基本的な機能は numpy の arange と同じで、始点・終点・増分を指定して array を生成します。  
python 組み込み関数である range の numpy 版、theano 版とでも言いましょうか。

[numpy.arange
document](http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html)
を見てもらえれば分かると思いますが、

[code]

    >>> np.arange(3) # 長さ 3 の int 型の array を生成
    array([0, 1, 2])
    >>> np.arange(3.0) # 長さ 3 の double 型の array を生成
    array([ 0.,  1.,  2.])
    >>> np.arange(3,7) # [3, 7) の int 型の array を生成
    array([3, 4, 5, 6])
    >>> np.arange(3,7,2) # [3, 7) の 2 増分の int 型の array を生成
    array([3, 5])
    
[/code]

という風に使用します。  
ただし theano の場合は theano の表現にエンコードされ、普通に `print` すると `ARange.0` と出力されます。  
内部の値を参照したい時は

[code]

    >>> T.arange(5).eval()
    array([0, 1, 2, 3, 4], dtype=int8)
    
[/code]

と最後に `eval()` を付けます。


CC BY-SA 3.0
2015-05-21T09:15:32.157
10460
2015-05-21T09:15:32.157
2713
10383
answer