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

Python 千层面-意外的关键字错误,python,theano,lasagne,Python,Theano,Lasagne,我正在尝试用Python学习机器学习,并希望运行lasagne/nolearn软件包。我已经安装了所有的软件包,并且正在使用下面的脚本(从),它给出了以下错误。如果有人知道如何解决此错误,请告诉我 脚本仅在一个千层面模块中给出初始错误: File "<ipython-input-89-2752ae2387c3>", line 11, in <module> from nolearn.lasagne import visualize ImportError:

我正在尝试用Python学习机器学习,并希望运行lasagne/nolearn软件包。我已经安装了所有的软件包,并且正在使用下面的脚本(从),它给出了以下错误。如果有人知道如何解决此错误,请告诉我

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

  File "<ipython-input-89-2752ae2387c3>", line 11, in <module>
    from nolearn.lasagne import visualize

ImportError: cannot import name visualize

您的nolearn版本似乎使用了不兼容版本的千层面

2015年7月和8月,在千层面的
Conv2DLayer
类中添加了
pad
功能(参见和)。您的nolearn版本显然希望使用该版本或更高版本

有两种可能性:

  • 您(可能是偶然)在系统上有两个版本的千层面,但它是Python最先发现的一个旧版本。如果这是真的,请删除旧版本和/或确保Python(首先)找到新版本

  • 你只是吃了一种过时的千层面。解决方案:更新它!如何做到这一点可能取决于您首先是如何安装它的。不过,最终您需要从Github获得最新版本


  • 您的nolearn版本似乎使用了不兼容版本的千层面

    2015年7月和8月,在千层面的
    Conv2DLayer
    类中添加了
    pad
    功能(参见和)。您的nolearn版本显然希望使用该版本或更高版本

    有两种可能性:

  • 您(可能是偶然)在系统上有两个版本的千层面,但它是Python最先发现的一个旧版本。如果这是真的,请删除旧版本和/或确保Python(首先)找到新版本

  • 你只是吃了一种过时的千层面。解决方案:更新它!如何做到这一点可能取决于您首先是如何安装它的。不过,最终您需要从Github获得最新版本


  • 您能告诉我们在代码的哪一行发生这种情况吗?向我们展示整个异常跟踪。该错误与关键字参数“pad”有关,但脚本没有使用该参数创建类。您可能安装了不兼容的模块。无论调用什么conv.py,其参数都是错误的。抱歉-找到插入到更新后的postCan中的整个异常跟踪,然后告诉我们在代码的哪一行发生了这种情况?向我们显示整个异常跟踪。该错误与关键字参数“pad”有关,但脚本没有使用该参数创建类。您可能安装了不兼容的模块。无论调用什么conv.py,其参数都是错误的。抱歉-查找插入到更新帖子中的整个异常跟踪
    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'
    
    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)