从Theano数组中删除inf

时间:2015-06-10 20:10:43

标签: python indexing theano

假设我在Theano中有一个向量,而某些元素是case "result":,我该如何删除它们?请考虑以下示例:

inf

根据Theano文档,这应该通过索引删除元素。但是,由于import numpy as np import theano from theano import tensor vec = tensor.dvector('x') fin = vec[(~tensor.isinf(vec)).nonzero()] f = theano.function([vec], fin) 返回f([1,2,np.inf]),情况并非如此。

如何执行此操作以便array([ 1., 2., inf])返回f([1,2,np.inf])

1 个答案:

答案 0 :(得分:2)

我找到了一个尴尬的解决方法

import theano
import theano.tensor as T
import numpy as np

vec = T.vector()
compare = T.isinf(vec)
out = vec[(1-compare).nonzero()]

v = [  1.,   1.,   1.,   1.,  np.inf,   3.,   4.,   5.,   6.,  np.inf]
v = np.asarray(v)

out.eval({var:v})
array([ 1.,  1.,  1.,  1.,  3.,  4.,  5.,  6.])

对于你的例子:

fin = vec[(1-T.isinf(vec)).nonzero()]
f = theano.function([vec], fin)

f([1,2,np.inf])
array([ 1.,  2.])