改变元素的子集' theano矩阵中的值

时间:2014-10-31 07:00:29

标签: python theano

我想动态创建掩码矩阵,例如numpy

mask = numpy.zeros((5,5))
row = numpy.arange(5)
col = [0, 2, 3, 0, 1]
mask[row, col] += 1   # that is setting some values to `1`

以下是我在theano尝试的内容,

mask = tensor.zeros((5,5))
row = tensor.ivector('row')
col = tensor.ivector('col')
mask = tensor.set_subtensor(mask[row, col], 1)

上述theano代码失败,错误消息为:not supported。 还有其他方法吗?

1 个答案:

答案 0 :(得分:4)

这适用于我0.6.0。我使用你的代码并从中创建了一个函数来检查输出。尝试复制并粘贴它:

import theano
from theano import tensor

mask = tensor.zeros((5,5))
row = tensor.ivector('row')
col = tensor.ivector('col')
mask = tensor.set_subtensor(mask[row, col], 1)

f = theano.function([row, col], mask)

print f(np.array([0, 1, 2]).astype(np.int32), np.array([1, 2, 3]).astype(np.int32))

这会产生

array([[ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])