【问题标题】:Using the TimeSeriesNnet() method from the nnet_ts module throws NameError使用 nnet_ts 模块中的 TimeSeriesNnet() 方法会引发 NameError
【发布时间】:2017-11-24 04:44:06
【问题描述】:

我正在尝试使用 python 模块 nnet-ts 创建一个神经网络。 它有一个名为 TimeSeriesNnet() 的内置方法,它接受两个参数; hidden_​​layers 和 activation_functions。

请参阅此模块的文档,以及 README.md 中的示例:

https://github.com/hawk31/nnet-ts

我正在运行 python 版本 2.7.13

nnet-ts 模块依赖于 5 个特定的包,我在下面列出了这些包以及我正在使用的当前版本:

numpy-1.13.0、pandas-0.20.2、scipy-0.19.0、theano-0.9.0 和 keras-2.0.5

按照自述文件中的示例(上面的链接),我的代码如下:

from nnet_ts import *
neural_net = TimeSeriesNnet(hidden_layers = [7, 3], activation_functions = ['tanh', 'tanh'])

执行此代码会引发 NameError。输出:

NameError: name 'TimeSeriesNnet' is not defined

我的猜测是这个错误的原因可能与不同的模块版本有关,因为代码与自述文件中给出的示例几乎相同。非常感谢任何帮助。

【问题讨论】:

  • 你在那个目录中有一个名为 nnet_ts.py 的文件吗?

标签: python numpy machine-learning neural-network theano


【解决方案1】:

您的代码部署肯定有问题。对于您的 Python 开发,我建议始终使用本地 virtual environment。对于这个神经网络时间序列,您可以使用python setup.py build 命令在本地构建它,它将在build/lib.linux-x86_64-2.7 目录中构建必要的文件。假设您拥有所有依赖项,则应该没有任何问题。在部署中,您只需将您的PYTHONPATH 设置到此目录,或者您只需使用sys.path.insert() 方法将此路径包含在运行时中。
例如,假设我在nnet-ts 目录中,我已经构建并运行了 nnet-ts,如下所示:

    $ python setup.py build
    $ python
    > import sys
    > sys.path.insert(0, 'build/lib.linux-x86_64-2.7')
    > from nnet_ts import *
    > time_series = np.array(pd.read_csv("nnet_ts/AirPassengers.csv")["x"]) 
    > neural_net = TimeSeriesNnet(hidden_layers = [20, 15, 5], activation_functions = ['sigmoid', 'sigmoid', 'sigmoid'])

【讨论】:

    【解决方案2】:

    转到安装nnet-ts 的路径,例如"C:\Users\a\anaconda3\Lib\site-packages\nnet_ts"

    在编辑器中打开__init__ python 文件并将行从 from TimeSeriesNnet import TimeSeriesNnet 到 from .TimeSeriesNnet import TimeSeriesNnet。

    在我的情况下,在TimeSeriesNnet 之前添加点。

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多