如何在 Theano 中进行 0/1 子集化?
How to to 0/1 subsetting in Theano?
objective是通过另一个数组中提供的值得到一个数组元素的子集。
import theano
import theano.tensor as T
a = T.vector('X', dtype='int64')
b = T.vector('Y', dtype='int64')
c = a[b]
g = function([a,b],c)
x = np.array([5,3,2,3,4,6], dtype=int)
y = np.array([0,0,1,0,0,1], dtype=int)
print g(x,y)
这会打印
[5 5 3 5 5 3]
而不是
[2 6]
如何获得预期结果?
尝试使用nonzero()
功能。
您的例子:
import theano
import theano.tensor as T
a = T.vector('X', dtype='int64')
b = T.vector('Y', dtype='int64')
c = a[b.nonzero()]
g = function([a,b],c)
x = np.array([5,3,2,3,4,6], dtype=int)
y = np.array([0,0,1,0,0,1], dtype=int)
print g(x,y)
希望对您有所帮助
objective是通过另一个数组中提供的值得到一个数组元素的子集。
import theano
import theano.tensor as T
a = T.vector('X', dtype='int64')
b = T.vector('Y', dtype='int64')
c = a[b]
g = function([a,b],c)
x = np.array([5,3,2,3,4,6], dtype=int)
y = np.array([0,0,1,0,0,1], dtype=int)
print g(x,y)
这会打印
[5 5 3 5 5 3]
而不是
[2 6]
如何获得预期结果?
尝试使用nonzero()
功能。
您的例子:
import theano
import theano.tensor as T
a = T.vector('X', dtype='int64')
b = T.vector('Y', dtype='int64')
c = a[b.nonzero()]
g = function([a,b],c)
x = np.array([5,3,2,3,4,6], dtype=int)
y = np.array([0,0,1,0,0,1], dtype=int)
print g(x,y)
希望对您有所帮助