Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras或Theano中的并行索引_Python_Theano_Keras - Fatal编程技术网

Python Keras或Theano中的并行索引

Python Keras或Theano中的并行索引,python,theano,keras,Python,Theano,Keras,二维问题 对于每个数据点,我都有一个索引矩阵,我想用它从2D查找矩阵中收集向量 对于单个数据点,Theano和Keras允许轻松索引。 例如: 更正式地说,我正在寻找这样一种手术: result[i,j,k,:]=查找[i,索引[i,j,k],:] 或 result[i,j,k,l]=查找[i,索引[i,j,k],l] 我使用扫描实现了一个Theano解决方案。其实很简单: import theano 将无张量导入为T def并行_聚集(参考、索引): 结果,u=theano.scan(fn=

二维问题

对于每个数据点,我都有一个索引矩阵,我想用它从2D查找矩阵中收集向量

对于单个数据点,Theano和Keras允许轻松索引。

例如:

更正式地说,我正在寻找这样一种手术:

result[i,j,k,:]=查找[i,索引[i,j,k],:]

result[i,j,k,l]=查找[i,索引[i,j,k],l]

我使用扫描实现了一个Theano解决方案。其实很简单:

import theano
将无张量导入为T
def并行_聚集(参考、索引):
结果,u=theano.scan(fn=lambda引用,索引:reference[index],outputs_info=None,sequences=[references,index])
返回结果
鉴于
Keras.rnn
是Keras的替代方案,将其重写到Keras后端似乎很麻烦。它对张量列表进行迭代,并且有一些奇怪的要求

我还想知道这是否是最快的选择,也许一些巧妙的重塑也能解决这个问题

import keras.backend as K
result = K.gather(reference, indices)
result = K.gather(reference, indices)

#let:
indices.shape = (100, 5)
reference.shape = (101, 68)

#where:
max(indices) < reference.shape[0]

#then:
result.shape = (100, 5, 68)
#let:
indices.shape = (batch_n, 100, 5)
reference.shape = (batch_n, 101, 68)

#desired result
result.shape = (batch_n, 100, 5, 68)