Theano AttributeError:'module'对象没有属性'relu'

时间:2016-03-11 08:29:52

标签: python bash pip theano

我想使用theano.tensor.nnet.relu,但我一直收到此错误:

AttributeError: 'module' object has no attribute 'relu' 

我已按照theano's documentation中的说明通过sudo pip install --upgrade theano命令更新了theano,我也尝试了sudo pip install --upgrade --no-deps theano。两个都没有工作,我仍然得到同样的错误。

我尝试theano -v确认我已安装最新版本,但后来收到以下错误:-bash: theano: command not found

所以我的两个问题是:

  • 我怎样才能看到theano的版本?
  • 更新theano时我做错了什么?如何解决首次提到的错误?

3 个答案:

答案 0 :(得分:2)

relu适用于 theano> = 0.7.1 。我的猜测是pip链接到theano==0.7

您可以使用pip freeze检查theano版本:

pip freeze | grep Theano

所以你必须安装带有指向点的最​​新theano到theano git repo:

pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

另请注意,relu是功能而不是模块,因此要访问它,您必须使用以下导入之一:

from theano.tensor.nnet import relu # access `relu` as is ..
import theano.tensor.nnet as theano_nnet #access `relu` as `theano_nnet.relu`

答案 1 :(得分:1)

theano.tensor.nnet模块仅在最新版本中支持relu。为了使用它,您需要从github安装最新版本或等到下一个版本。

或者,您可以像这样实现它:

def relu(x):
    return T.maximum(x, 0.)

这可能不在位,但它会为您提供结果和渐变。

答案 2 :(得分:1)

  1. 要查看theano版本,您可以运行以下代码:

    import theano
    print theano.__version__
    
  2. 您应该按照here的说明获取最新版本

  3. 实际上relu函数很容易编码,你可以创建自己的relu函数,比如eickenberg的答案,或者像theano.tensor.nnet样式:

        def relu(x):   
           return 0.5 * (x + abs(x))