1
我想學習Python中的機器學習 - 並且想運行lasagne/nolearn包。我已經安裝了所有軟件包 - 並且正在使用下面的腳本(來自http://semantive.com/deep-learning-examples/),它給出了以下錯誤。請讓我知道是否有人有關於如何解決此錯誤的想法。意大利千層麪 - 意外的關鍵字錯誤
腳本給出僅在烤寬麪條模塊中的一個初始錯誤:
File "<ipython-input-89-2752ae2387c3>", line 11, in <module>
from nolearn.lasagne import visualize
ImportError: cannot import name visualize
隨後 - 周圍有墊參數的錯誤:
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)
你能告訴我們這發生了什麼行*你*的代碼? – Noxeus
向我們展示了整個異常跟蹤。該錯誤與關鍵字參數「pad」有關,但是您的腳本不會使用該參數創建類。它有可能是您安裝了不兼容的模塊。無論調用conv.py,其參數都是錯誤的。 – tdelaney
道歉 - 找到更新後的帖子中插入的整個異常跟蹤 – user1885116