我有一个矩阵W和两个向量y1和y2。我想从W中提取行,我感兴趣的行在y1:y2范围内。在Theano中做这件事的最好方法是什么?可以不使用theano.map或tensor.switch方法来完成吗?得到的矩阵将用于梯度计算中的某个地方。例如:
W = [[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.],
[ 13., 21., 33., 41.],
[ 55., 66., 74., 83.],
[ 92., 106., 711., 142.],
[ 19., 27., 33., 24.],
[ 54., 66., 74., 38.],
[ 29., 210., 131., 412.]]
y1 = [[0],
[0],
[6],
[3]]
y2 = [[3],
[3],
[9],
[6]]
I want w[y1:y2,:] ., i.e.
newW = [[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.],
[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.],
[ 19., 27., 33., 24.],
[ 54., 66., 74., 38.],
[ 29., 210., 131., 412.],
[ 13., 21., 33., 41.],
[ 55., 66., 74., 83.],
[ 92., 106., 711., 142.]]发布于 2014-11-20 18:18:04
所以,告诉其他人,你想要的是:
out=[]
for i,j in zip(y1,y2):
out.append(W[i:j])
numpy.asarray(out)y1和y2的长度是常数吗?如果是这样,您可以这样展开循环:
out=[]
for i in range(LEN):
out.append(W[y1[i]:y2[j]])
theano.stack(*out)Theano支持NumPy高级索引的所有功能。如果您可以找到如何在没有堆栈的情况下使用NumPy来完成它,那么您可以在Theano中以同样的方式来完成它。
https://stackoverflow.com/questions/26992692
复制相似问题