我现在正在学习,但总有一些我的问题代码如下:
import theano
from numpy import *
import theano.tensor as T
a = [1,2,3,4]
b = [7,8,9,10]
print T.argmax(a)
我以为它会打印索引“4”,但结果是:
^{pr2}$另外,当我使用T.neq()时,如下所示:
import theano
from numpy import *
import theano.tensor as T
a = [1,2,3,4]
b = [7,8,9,10]
print T.neq(a,b)
结果表明:
Elemwise{neq,no_inplace}.0
我真的不知道,我错过了什么吗?提前谢谢你。。在
T.argmax()需要一个Theano TensorVariable类型。在no中使用的一些类型的变量列在here中。不要让“全类型构造函数”这个名字吓到你。从你想用哪种类型的数据作为你的输入来考虑它们。你用的是浮点矩阵吗?可能是“图像处理”中的变量?那么相关的TensorVariable类型可能是“tensor4”
在您的代码中,我们试图将一个列表类型输入到T.argmax()。所以从上述观点来看,这是行不通的。另外,请注意类型(T.argmax(a))是一个theano.tensor.var.TensorVariable类型。所以它期望一个TensorVariable作为输入,它也输出一个TensorVariable类型。所以这不会返回实际的argmax。在
好吧,那怎么办?我们如何在Theano中进行这种计算呢?在
让我们首先确定要处理的数据类型。这将是我们将要构建的计算图的起点。在本例中,我们似乎要处理数组或向量。Theano有一个ivector类型,它是一个整数向量,或者一个fvector类型,它是一个float32值的向量。让我们继续使用您的数据并执行ivector,因为我们有整数值:
^{1}$这行代码刚刚创建了一个tensorvariablex,它表示我们想要的输入类型,一个整数数组。在
现在让我们为x元素的argmax定义一个TensorVariable:
^{pr2}$到目前为止,我们已经构建了一个计算图,它期望一个整数数组作为输入,并将输出该数组的argmax。但是,为了真正做到这一点,我们必须将其编译成一个函数:
在theano.功能语法可以找到here。在
把这个函数想象成是在执行我们用x和y定义的计算
当我执行:
它返回:
我们到底做了什么?通过定义no变量并使用张量函数,我们建立一个计算图。然后我们用theano.功能编译一个函数,在我们指定的实际输入上实际执行该计算。在
结束:如何执行“不等于”操作?在
将返回:
其中一个关键的概念差异是,我把a,b当作无张量变量,而不是给它们指定显式变量。在
你会得到它的窍门,只要记住你需要定义你的计算在无张量变量,然后要真正“使用它”,你必须用theano.功能. 在
相关问题 更多 >
编程相关推荐