0

Theano チュートリアルで提供されているロジスティック回帰の例では、次のように関数に 1 行のコードがありnegative_log_likelihoodます。

def negative_log_likelihood(self, y):
    """Return the mean of the negative log-likelihood of the prediction
    of this model under a given target distribution.

    .. math::

        \frac{1}{|\mathcal{D}|} \mathcal{L} (\theta=\{W,b\}, \mathcal{D}) =
        \frac{1}{|\mathcal{D}|} \sum_{i=0}^{|\mathcal{D}|} \log(P(Y=y^{(i)}|x^{(i)}, W,b)) \\
            \ell (\theta=\{W,b\}, \mathcal{D})

    :type y: theano.tensor.TensorType
    :param y: corresponds to a vector that gives for each example the
              correct label

    Note: we use the mean instead of the sum so that
          the learning rate is less dependent on the batch size
    """
    # y.shape[0] is (symbolically) the number of rows in y, i.e.,
    # number of examples (call it n) in the minibatch
    # T.arange(y.shape[0]) is a symbolic vector which will contain
    # [0,1,2,... n-1] T.log(self.p_y_given_x) is a matrix of
    # Log-Probabilities (call it LP) with one row per example and
    # one column per class LP[T.arange(y.shape[0]),y] is a vector
    # v containing [LP[0,y[0]], LP[1,y[1]], LP[2,y[2]], ...,
    # LP[n-1,y[n-1]]] and T.mean(LP[T.arange(y.shape[0]),y]) is
    # the mean (across minibatch examples) of the elements in v,
    # i.e., the mean log-likelihood across the minibatch.
    return -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]), y])

上記のコードの最後の行で角括弧を正確に使用する方法を誰かが説明できますか? はどう[T.arange(y.shape[0]), y]解釈されるのでしょうか?

ありがとう!

4

2 に答える 2

1

必要な情報のほとんどは、関数のコメントにあります。

T.log(self.p_y_give_x)numpy 行列を返します。

[T.arange(y.shape[0]), y] は行列のスライスです。ここでは、numpy の高度なスライスを使用しています。参照: http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

于 2013-11-29T11:56:41.720 に答える
0

ここでのマトリックススライスについても混乱しています。T.arange(y.shape[0])は1次元リストです.y.shape[0]は設定したミニバッチのサイズに依存します.yはT.arange(yと同じ次元を持つラベルのリストです. .shape[0]). したがって、@William Denman の参照によると、このスライスは次のことを意味します: T.log(self.p_y_give_x) の行列のすべての行に対して、列インデックス y(ここで y はゴールデンを示します) を選択しますここでは索引としても使用されています)。

于 2016-03-06T03:13:59.817 に答える