python - theano 中用索引矩阵索引张量?

标签 python numpy matrix theano

我有一个 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 执行此操作最有效/最优雅的方法是什么?

最佳答案

您可以在 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)

关于python - theano 中用索引矩阵索引张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947726/

相关文章:

python - 在 python 中加载 Analyze 7.5 格式图像

matlab - find() 的奇怪行为

python - Numpy 向对角线添加值

python - 是否有接受距离矩阵和原始向量的Python Isomap 模块?

python - 使用 Python 设置和压缩问题

python - 读取文本文件(以冒号分隔的单词)并获取元组列表

python - 在 Python : is there something like -0? 中对列表进行切片

python - 有没有办法使用预训练的 doc2vec 模型来评估某些文档数据集

python - 转换日期格式 python - 不寻常的日期格式 - 提取 %Y%M%D

r - 如何在 R 中将列的元素移动到数据框的顶部