从 Theano 数组中删除 inf
Remove inf from Theano array
假设我在 Theano 中有一个向量,其中一些元素是 inf
,我该如何删除它们?考虑以下示例:
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)
根据 Theano 文档,这应该通过索引删除元素。然而,情况并非如此 f([1,2,np.inf])
returns array([ 1., 2., inf])
。
我怎样才能做到 f([1,2,np.inf])
returns array([ 1., 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.])
假设我在 Theano 中有一个向量,其中一些元素是 inf
,我该如何删除它们?考虑以下示例:
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)
根据 Theano 文档,这应该通过索引删除元素。然而,情况并非如此 f([1,2,np.inf])
returns array([ 1., 2., inf])
。
我怎样才能做到 f([1,2,np.inf])
returns array([ 1., 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.])