【问题标题】:Training CNN with images in sklearn neural net在 sklearn 神经网络中使用图像训练 CNN
【发布时间】:2017-05-21 06:07:14
【问题描述】:

我正在尝试训练 CNN(Sklearn 神经网络)。我有 4 张 128 x 128 像素的图像。形状 -> (4, 128, 128) 我正在阅读类似的图像 -

in1 = misc.imread('../data/Train_Data/train-1.jpg', mode='L', flatten=True)/255. in2 = misc.imread('../data/Train_Data/train-2.jpg', mode='L', flatten=True)/255. in3 = misc.imread('../data/Train_Data/train-3.jpg', mode='L', flatten=True)/255. in4 = misc.imread('../data/Train_Data/train-4.jpg', mode='L', flatten=True)/255.

然后像这样创建numpy数组 -

X_train = [in1,in2,in3,in4]
X_train = np.array(X_train)

与标签和测试集相同。

然后我正在训练我的 CNN -

nn = Classifier(
    layers=[
        Convolution('Rectifier', channels=12, kernel_shape=(3, 3), border_mode='full'),
        Convolution('Rectifier', channels=8, kernel_shape=(3, 3), border_mode='valid'),
        Layer('Rectifier', units=64),
        Layer('Softmax')],
    learning_rate=0.002,
    valid_size=0.2,
    n_stable=10,
    verbose=True)


nn.fit(X_train, y_train)

它会抛出错误 -

Traceback(最近一次调用最后一次): 文件“/home/zaverichintan/PycharmProjects/WBC_identification/neural/trial.py”,第 91 行,在 nn.fit(X_train, y_train) 文件“/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sknn/mlp.py”,第 383 行,适合 ys = [lb.fit_transform(y[:,i]) for i, lb in enumerate(self.label_binarizers)] 文件“/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/base.py”,第 494 行,在 fit_transform 返回 self.fit(X, **fit_params).transform(X) 文件“/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py”,第 335 行,在转换中 sparse_output=self.sparse_output) 文件“/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py”,第 497 行,位于 label_binarize y = column_or_1d(y) 文件“/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/utils/validation.py”,第 563 行,在 column_or_1d raise ValueError("bad input shape {0}".format(shape)) ValueError: bad input shape (4, 128)

【问题讨论】:

    标签: numpy scipy conv-neural-network


    【解决方案1】:

    您的in1, in2,....inN128x128 的二维数组,您必须将它们全部转换为16384 的一维数组。 in1.shape 应该打印 (16384,)X_train.shape 应该打印 (4,16384)。您可以使用 numpy 数组并应用 [reshape][1] 函数。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2015-05-22
      • 2012-04-02
      相关资源
      最近更新 更多