首页 文章

在theano中使用索引矩阵索引张量?

提问于
浏览
2

我有一个theano张量A,使得A.shape =(40,20,5)和theano矩阵B,使得B.shape =(40,20) . 我可以执行单行操作来获得矩阵C,其中C.shape =(40,20)和C(i,j)= A [i,j,B [i,j]]和theano语法?

基本上,我想使用B作为索引矩阵;使用theano做这件事最有效/优雅的是什么?

1 回答

  • 4

    您可以在numpy中执行以下操作:

    import numpy as np
    
    A = np.arange(4 * 2 * 5).reshape(4, 2, 5)
    B = np.arange(4 * 2).reshape(4, 2) % 5
    
    C = A[np.arange(A.shape[0])[:, np.newaxis], np.arange(A.shape[1]), B]
    

    所以你可以在theano做同样的事情:

    import theano
    import theano.tensor as T
    
    AA = T.tensor3()
    BB = T.imatrix()
    
    CC = AA[T.arange(AA.shape[0]).reshape((-1, 1)), T.arange(AA.shape[1]), BB]
    
    f = theano.function([AA, BB], CC)
    
    f(A.astype(theano.config.floatX), B)
    

相关问题