首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >千层面-意外的关键字错误

千层面-意外的关键字错误
EN

Stack Overflow用户
提问于 2015-11-05 14:40:26
回答 1查看 742关注 0票数 1

我试着用Python学习机器学习--并且想运行千层面/诺尔学习包。我已经安装了所有的包-并且正在使用下面的脚本(来自http://semantive.com/deep-learning-examples/),这会导致以下错误。如果有人想知道如何解决这个错误,请告诉我。

该脚本只在一个千层面模块中给出了一个初始错误:

代码语言:javascript
复制
  File "<ipython-input-89-2752ae2387c3>", line 11, in <module>
    from nolearn.lasagne import visualize

ImportError: cannot import name visualize

随后-在pad参数周围有一个错误:

代码语言:javascript
复制
Traceback (most recent call last):

  File "<ipython-input-90-7a7b6ee7a652>", line 66, in <module>
    network = net.fit(x_train, y_train)

  File "C:\Users\Anaconda\lib\site-packages\nolearn\lasagne.py", line 138, in fit
    out = self._output_layer = self.initialize_layers()

  File "C:\Users\Anaconda\lib\site-packages\nolearn\lasagne.py", line 369, in initialize_layers
    layer = layer_factory(layer, **layer_params)

  File "C:\Users\src\lasagne\lasagne\layers\conv.py", line 368, in __init__
    super(Conv2DLayer, self).__init__(incoming, **kwargs)

TypeError: __init__() got an unexpected keyword argument 'pad'

代码

代码语言:javascript
复制
import cPickle as pickle
    import os
    import numpy as np

    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    import lasagne
    from lasagne import layers
    from lasagne.updates import nesterov_momentum
    from nolearn.lasagne import NeuralNet
    from nolearn.lasagne import visualize
    from sklearn.metrics import confusion_matrix, classification_report, accuracy_score


    def load_data(path):
        x_train = np.zeros((50000, 3, 32, 32), dtype='uint8')
        y_train = np.zeros((50000,), dtype="uint8")

        for i in range(1, 6):
            data = unpickle(os.path.join(path, 'data_batch_' + str(i)))
            images = data['data'].reshape(10000, 3, 32, 32)
            labels = data['labels']
            x_train[(i - 1) * 10000:i * 10000, :, :, :] = images
            y_train[(i - 1) * 10000:i * 10000] = labels

        test_data = unpickle(os.path.join(path, 'test_batch'))
        x_test = test_data['data'].reshape(10000, 3, 32, 32)
        y_test = np.array(test_data['labels'])

        return x_train, y_train, x_test, y_test


    def unpickle(file):
        f = open(file, 'rb')
        dict = pickle.load(f)
        f.close()
        return dict


    net = NeuralNet(
        layers=[('input', layers.InputLayer),
                ('conv2d1', layers.Conv2DLayer),
                ('maxpool1', layers.MaxPool2DLayer),
                ('conv2d2', layers.Conv2DLayer),
                ('maxpool2', layers.MaxPool2DLayer),
                ('dense', layers.DenseLayer),
                ('output', layers.DenseLayer),
                ],
        input_shape=(None, 3, 32, 32),
        conv2d1_num_filters=20,
        conv2d1_filter_size=(5, 5),
        conv2d1_stride=(1, 1),
        conv2d1_pad=(2, 2),
        conv2d1_nonlinearity=lasagne.nonlinearities.rectify,
        maxpool1_pool_size=(2, 2),
        conv2d2_num_filters=20,
        conv2d2_filter_size=(5, 5),
        conv2d2_stride=(1, 1),
        conv2d2_pad=(2, 2),
        conv2d2_nonlinearity=lasagne.nonlinearities.rectify,
        maxpool2_pool_size=(2, 2),
        dense_num_units=1000,
        dense_nonlinearity=lasagne.nonlinearities.rectify,
        output_nonlinearity=lasagne.nonlinearities.softmax,
        output_num_units=10,
        update=nesterov_momentum,
        update_momentum=0.9,
        update_learning_rate=0.0001,
        max_epochs=100,
        verbose=True
    )

    x_train, y_train, x_test, y_test = load_data(os.path.expanduser('~/Dropbox/Python/cifar-10-python.tar/cifar-10-python/cifar-10-batches-py/'))

    network = net.fit(x_train, y_train)
    predictions = network.predict(x_test)

    print classification_report(y_test, predictions)
    print accuracy_score(y_test, predictions)
EN

回答 1

Stack Overflow用户

发布于 2015-11-06 07:19:33

你似乎在使用一个不兼容版本的拉扎涅作为你的诺尔学版本。

pad特性在2015年7月和8月被添加到Conv2DLayer类中(参见这里这里)。很明显,您的“诺尔学习”版本希望使用该版本或更高版本。

有两种可能性:

  1. 您(可能是意外地)在您的系统上有两个版本的Las格涅,但是它是Python首先发现的一个旧版本。如果这是真的,请删除旧版本和/或确保Python找到(首先)更新的版本。
  2. 你只是有一个过时的版本的拉扎涅。解决方案:更新!如何做到这一点可能首先取决于您如何安装它。不过,最终您将需要从Github那里获得最新版本。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33547401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档