首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提亚诺:提取矩阵中的特定行

提亚诺:提取矩阵中的特定行
EN

Stack Overflow用户
提问于 2014-11-18 11:01:18
回答 1查看 535关注 0票数 0

我有一个矩阵W和两个向量y1和y2。我想从W中提取行,我感兴趣的行在y1:y2范围内。在Theano中做这件事的最好方法是什么?可以不使用theano.map或tensor.switch方法来完成吗?得到的矩阵将用于梯度计算中的某个地方。例如:

代码语言:javascript
运行
复制
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.]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-20 18:18:04

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

代码语言:javascript
运行
复制
out=[]
for i,j in zip(y1,y2):
   out.append(W[i:j])
numpy.asarray(out)

y1和y2的长度是常数吗?如果是这样,您可以这样展开循环:

代码语言:javascript
运行
复制
out=[]
for i in range(LEN):
   out.append(W[y1[i]:y2[j]])
theano.stack(*out)

Theano支持NumPy高级索引的所有功能。如果您可以找到如何在没有堆栈的情况下使用NumPy来完成它,那么您可以在Theano中以同样的方式来完成它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26992692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档