gpt4 book ai didi

python - 我想了解 theano 功能(给定,更新)

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:09 25 4
gpt4 key购买 nike

想请教几个关于theano函数的问题。

1.我看到没有分配输入变量的脚本。如果是这样,它是如何工作的?

import theano.tensor as T
import theano
# Define symbolic variables
X = T.matrix('X')
w = theano.shared([0.1, 0.1], name='w')
t = T.vector('t')
# Define Loss Expression
L = (t-X*w)**2
# Calculate Gradient Expression
dLdw = T.grad(L, w)
# Compile the training function
lr = 0.1
data_X = theano.shared([[0.1, 0.2], [0.2, 0.3], [0.1, 0.4], [0.2, 0.4]])
data_t = theano.shared([3, 3.5, 4, 4.2])
calc_output = theano.function([], L,
updates=[(w, w - lr*dLdw)], givens=[(X,data_X), (t,data_t)] )
for epoch in xrange(100):
calc_output()

正如您在上面看到的,输入方括号是空的。那么在这种情况下输入什么?

2.函数中的'给定'参数,有点难理解。人们说这是为了提升 GPU 进程,但我想知道应该为“给定”分配哪些变量。请看下面的脚本。

index = T.scalar('index')
test_model = theano.function(inputs=[index],
outputs=classifier.errors(y),
givens={
x: test_set_x[index * batch_size: (index + 1) * batch_size],
y: test_set_y[index * batch_size: (index + 1) * batch_size]})

validate_model = theano.function(inputs=[index],
outputs=classifier.errors(y),
givens={
x: valid_set_x[index * batch_size:(index + 1) * batch_size],
y: valid_set_y[index * batch_size:(index + 1) * batch_size]})

在给定的情况下,x 和 y 做什么?冒号 (:) 是什么意思?据我所知,(theano 主页说:givens(在变量对 (Var1, Var2) 上可迭代。列表、元组或字典。每对中的 Var1 和 Var2 必须具有相同的类型。)——具体替换计算图(Var2 替换 Var1)。它需要 2 个变量,但在第一个示例中似乎有 4 个变量,而第二个对我来说非常复杂。谁能告诉我给定的具体细节是什么?并解释给定变量中的第二个脚本发生了什么。

此外,在主页上,它说“您可以使用函数的 givens 参数来替换图形中的特定节点,以达到特定功能的目的。”我不知道它替换了图中的哪个特定节点。

请帮帮我!!

最佳答案

首先,给定意味着 T 变量的实际值是多少。如果在给定中有(x,a)并且a是一个np.array那么它会在计算时使用a替换x,同样在给定中如果有x:a,它意味着同样的事情。在第一个示例中,data_X 是输入,只是不是在第一个参数中给出而是在 givens 中给出,这是相同的。在第二个例子中,test_set_x 是 theano.shared 这意味着它的值已经存在,它是一个矩阵。但是你将使用它的哪一部分,你将通过索引选择哪个是输入。

关于python - 我想了解 theano 功能(给定,更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com