将输入参数传递给 Theano 函数的正确方法是啥?

Posted

技术标签:

【中文标题】将输入参数传递给 Theano 函数的正确方法是啥?【英文标题】:What is the right way to pass inputs parameters to a Theano function?将输入参数传递给 Theano 函数的正确方法是什么? 【发布时间】:2016-06-07 23:03:26 【问题描述】:

我正在使用安装了 Theano 库(更新版本)的 Python 2.7,我在定义 Theano 函数时遇到了输入参数问题。

代码是:

    corruption_level = T.scalar('corruption')  # % of corruption to use
    learning_rate = T.scalar('lr')  # learning rate to use

    fn = theano.function(
        inputs=[
            index,
            theano.In(corruption_level, value=0.2),
            theano.In(learning_rate, value=0.1)
        ],
        outputs=cost,
        updates=updates,
        givens=
            self.x: train_set_x[batch_begin: batch_end]
        
    )

取自这里:

http://deeplearning.net/tutorial/code/SdA.py

它给了我这个错误,使用 Eclipse:

NotImplementedError: In() instances and tuple inputs trigger the old
semantics, which disallow using updates and givens

所以,如果我以这种方式更改代码:

        fn = theano.function(
            inputs=[
                index,
                #theano.In(corruption_level, value=0.2),
                #theano.In(learning_rate, value=0.1)
                corruption_level,
                learning_rate
            ],
            outputs=cost,
            updates=updates,
            givens=
                self.x: train_set_x[batch_begin: batch_end]
            
        )

它有效,但我无法传递 corruption_level 和 learning_rate 的值。

有人可以帮忙吗?谢谢!

卢卡

【问题讨论】:

theano.In 语法对我有用,也许您使用的是不同的版本? (我的是 Theano 0.7) theano.function是创建一个函数,可以在调用的时候传值,比如fn(idx, 0.2, 0.1) 是的,theano.In(corruption_level, value=0.2)corruption_level 的默认值设为 0.2,如果您将 0.2 显式传递给函数,它应该是相同的。 好的,谢谢! :-) 而且,只是为了好奇:如果我想将默认值设为 0.2?因为如果我简单地写 corruption_level = 0.2,作为输入参数,它就不起作用! :-( 不客气,如果没有theano.In,我不知道该怎么做,也许我只是用另一个具有一些默认值的函数来包装它。 :P 【参考方案1】:

In 已正式弃用,并计划进行替换。几天之内,它就从 Theano 开发版本中删除了。但后来我们意识到,最好保留它并更改它并取消我们计划中的替换。

在那段时间,Theano 想要的和深度学习教程之间也存在一些不一致。

这是固定的。所以现在,更新到 Theano 0.8 或使用 Theano 的当前开发版本,它应该可以正常工作。

也许其他有相关问题的人可能需要在几天内更新深度学习教程代码,它正在使用我们删除的计划替换。

theano.In() 现在可以像您的问题一样工作了。

【讨论】:

以上是关于将输入参数传递给 Theano 函数的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在python中将函数传递给cProfile的正确方法是啥?

如何将视图输入参数传递给 @State 变量?

我试图将一个非可变整数参数从一个函数传递给其他定义的函数;我的错误是啥?

将许多参数传递给控制器​​的好方法是啥?

将多个参数传递给后端 API reactjs

如何将参数传递给控制器 构造函数?这是正确的做法吗?