如何将比较 (min,gt) 操作应用于 Theano 变量的数组?
How to apply operations of comparaison (min,gt) to a ndarray of Theano variables?
我正在尝试使用 PyMC3 进行贝叶斯校准;但是,我的模型函数需要比较 Theano 变量数组。
这里是问题的说明:
import theano.tensor as tt
# create an example of array of Theano variables
a=np.array([tt.as_tensor_variable(1)*1,tt.as_tensor_variable(1)*2])
# try to apply operations of comparison
tt.gt(a,1)
->AsTensorError: ('Cannot convert [Elemwise{mul,no_inplace}.0 Elemwise{mul,no_inplace}.0] to TensorType', <class 'numpy.ndarray'>)*
a>1
-> TypeError: Variables do not support boolean operations.
有人知道如何处理吗?
如果您已经有 TensorVariables
的 NumPy ndarray
,那么您可以将它转储到列表中:
a = np.array([tt.as_tensor_variable(1)*1, tt.as_tensor_variable(1)*2])
res = tt.gt(a.tolist(), 1)
res.eval()
# array([False, True])
但是,如果可以的话,我会完全避免使用 NumPy。
a = [tt.as_tensor_variable(1)*1, tt.as_tensor_variable(1)*2]
res = tt.gt(a, 1)
res.eval()
# array([False, True])
更好的是,TensorVariable
类型已经完全支持多维,坚持使用 theano.tensor
中的方法,将获得比来回移动到 list
更高效的性能或 ndarray
个对象。例如,
a = tt.as_tensor([1,2])
res = tt.gt(a, 1)
res.eval()
# array([False, True])
我正在尝试使用 PyMC3 进行贝叶斯校准;但是,我的模型函数需要比较 Theano 变量数组。
这里是问题的说明:
import theano.tensor as tt
# create an example of array of Theano variables
a=np.array([tt.as_tensor_variable(1)*1,tt.as_tensor_variable(1)*2])
# try to apply operations of comparison
tt.gt(a,1)
->AsTensorError: ('Cannot convert [Elemwise{mul,no_inplace}.0 Elemwise{mul,no_inplace}.0] to TensorType', <class 'numpy.ndarray'>)*
a>1
-> TypeError: Variables do not support boolean operations.
有人知道如何处理吗?
如果您已经有 TensorVariables
的 NumPy ndarray
,那么您可以将它转储到列表中:
a = np.array([tt.as_tensor_variable(1)*1, tt.as_tensor_variable(1)*2])
res = tt.gt(a.tolist(), 1)
res.eval()
# array([False, True])
但是,如果可以的话,我会完全避免使用 NumPy。
a = [tt.as_tensor_variable(1)*1, tt.as_tensor_variable(1)*2]
res = tt.gt(a, 1)
res.eval()
# array([False, True])
更好的是,TensorVariable
类型已经完全支持多维,坚持使用 theano.tensor
中的方法,将获得比来回移动到 list
更高效的性能或 ndarray
个对象。例如,
a = tt.as_tensor([1,2])
res = tt.gt(a, 1)
res.eval()
# array([False, True])