为什么我不能用theano.tensor.argmax以及张量平均值正确地

2024-09-24 06:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在学习,但总有一些我的问题代码如下:

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

我真的不知道,我错过了什么吗?提前谢谢你。。在


Tags: no代码fromimportnumpyastheanoneq
1条回答
网友
1楼 · 发布于 2024-09-24 06:29:45

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。但是,为了真正做到这一点,我们必须将其编译成一个函数:

get_argmax = theano.function([x], y)

在theano.功能语法可以找到here。在

把这个函数想象成是在执行我们用x和y定义的计算

当我执行:

get_argmax([1,2,3,4,19,1])

它返回:

array(4)

我们到底做了什么?通过定义no变量并使用张量函数,我们建立一个计算图。然后我们用theano.功能编译一个函数,在我们指定的实际输入上实际执行该计算。在

结束:如何执行“不等于”操作?在

a = T.ivector('a')
b = T.ivector('b')
out = T.neq(a,b)
get_out = theano.function([a,b], out)
print get_out([1,2,3,4], [7,8,9,10])

将返回:

[1,1,1,1]

其中一个关键的概念差异是,我把a,b当作无张量变量,而不是给它们指定显式变量。在

你会得到它的窍门,只要记住你需要定义你的计算在无张量变量,然后要真正“使用它”,你必须用theano.功能. 在

相关问题 更多 >