我正在进行图像分类任务,并决定使用 Lasagne + Nolearn 来构建神经网络原型。所有标准的例子,如 MNIST 数字分类,都运行得很好,但当我尝试处理自己的图像时就出现了问题。
我想使用三通道图像,而不是灰度图像。以下是我尝试从图像中获取数组的代码:
img = Image.open(item) img = ImageOps.fit(img, (256, 256), Image.ANTIALIAS) img = np.asarray(img, dtype = 'float64') / 255. img = img.transpose(2,0,1).reshape(3, 256, 256) X.append(img)
这是神经网络及其拟合的代码:
X, y = simple_load("new")X = np.array(X)y = np.array(y)net1 = NeuralNet( layers=[ # three layers: one hidden layer ('input', layers.InputLayer), ('hidden', layers.DenseLayer), ('output', layers.DenseLayer), ], # layer parameters: input_shape=(None, 65536), # 96x96 input pixels per batch hidden_num_units=100, # number of units in hidden layer output_nonlinearity=None, # output layer uses identity function output_num_units=len(y), # 30 target values # optimization method: update=nesterov_momentum, update_learning_rate=0.01, update_momentum=0.9, regression=True, # flag to indicate we're dealing with regression problem max_epochs=400, # we want to train this many epochs verbose=1, ) net1.fit(X, y)
我收到了如下异常:
Traceback (most recent call last): File "las_mnist.py", line 39, in <module> net1.fit(X[i], y[i]) File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 266, in fit self.train_loop(X, y) File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 273, in train_loop X, y, self.eval_size) File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 377, in train_test_split kf = KFold(y.shape[0], round(1. / eval_size))IndexError: tuple index out of range
那么,您是如何将图像数据“输入”到网络中的呢?感谢您的回答或任何建议!
回答:
我也在 lasagne-users 论坛上提出了这个问题,Oliver Duerr 用代码示例帮了我很多忙:https://groups.google.com/forum/#!topic/lasagne-users/8ZA7hr2wKfM