我正在阅读以下给出的逻辑函数的代码http://deeplearning.net/tutorial/logreg.html http://deeplearning.net/tutorial/logreg.html。我对之间的区别感到困惑inputs
& givens
函数的变量。计算小批量模型所犯错误的函数是:
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 共享输入变量并在创建实际模型实例时定义它们?
The givens
参数允许您将模型的描述和输入变量的确切定义分开。这是给定参数的作用的结果:在编译之前修改要编译的图。换句话说,我们在图中用关联值替换给定中的键。
在深度学习教程中,我们使用普通的 Theano 变量来构建模型。我们用givens
来加速GPU。在这里,如果我们将数据集保留在 CPU 上,我们将在每次函数调用时将小批量传输到 GPU。当我们对数据集进行多次迭代时,我们最终会将数据集多次传输到 GPU。由于数据集足够小,可以容纳在 GPU 上,因此我们将其放入共享变量中,以便将其传输到可用的 GPU(如果图形处理单元被禁用,则保留在中央处理单元上)。然后,在编译函数时,我们将输入与与要使用的数据集的小批量相对应的切片交换。那么 Theano 函数的输入就是我们想要使用的小批量的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)