Neural network Theano:提取矩阵中的特定行

Neural network Theano:提取矩阵中的特定行,neural-network,enthought,theano,Neural Network,Enthought,Theano,我有一个矩阵W和两个向量y1和y2。我想从W中提取行。我感兴趣的行在[y1:y2]范围内。在Theano这样做的最佳方式是什么不使用ano.map或tensor.switch方法是否可以完成此操作?所得矩阵将在梯度计算中使用。例如: W = [[ 1., 2., 3., 4.], [ 5., 6., 7., 8.], [ 9., 10., 11., 12.], [ 13., 21., 33., 41.], [ 5

我有一个矩阵W和两个向量y1和y2。我想从W中提取行。我感兴趣的行在[y1:y2]范围内。在Theano这样做的最佳方式是什么不使用ano.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.]]

所以,告诉别人你想要的是:

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中使用相同的方法执行此操作。

因此,请告诉其他人您想要的是:

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中使用相同的方法执行此操作。

因此,请告诉其他人您想要的是:

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中使用相同的方法执行此操作。

因此,请告诉其他人您想要的是:

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中使用相同的方法执行此操作。

谢谢您的回答@Lanc:顺便说一句,正确答案是使用列表和堆叠。正如你所看到的,它似乎在theano的背景下为你提供了有用的信息,尽管你坚持不在你的numpy帖子中使用它…谢谢你的回答@Lanc:顺便说一句,正确答案是使用列表和堆叠。正如你所看到的,它似乎在theano的背景下为你提供了有用的信息,尽管你坚持不在你的numpy帖子中使用它…谢谢你的回答@Lanc:顺便说一句,正确答案是使用列表和堆叠。正如你所看到的,它似乎在theano的背景下为你提供了有用的信息,尽管你坚持不在你的numpy帖子中使用它…谢谢你的回答@Lanc:顺便说一句,正确答案是使用列表和堆叠。正如你所看到的,它似乎在theano的背景下为你提供了有用的信息,尽管你坚持不在你的numpy帖子中使用它。。。