在sklearn神经网络中使用图像训练CNN [英] Training CNN with images in sklearn neural net

查看:1680
本文介绍了在sklearn神经网络中使用图像训练CNN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to train CNN (Sklearn Neural Network). I am having 4 images of 128 x 128 pixels. shape -> (4, 128, 128) I am reading images like -

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数组-

Then numpy array is created like this -

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

与标签和测试集相同.

然后我正在训练我的CNN-

Then I am training my 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)

它将引发错误--

回溯(最近通话最近): 在第91行的"/home/zaverichintan/PycharmProjects/WBC_identification/neural/trial.py"文件中 nn.fit(X_train,y_train) 适合的文件"/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sknn/mlp.py",第383行 ys = [lb.fit_transform(y [:,i])对于i,lb(枚举(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) 在label_binarize的第497行中,文件"/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py" y = column_or_1d(y) 在column_or_1d中的文件"/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/utils/validation.py"中,第563行 引发ValueError(错误的输入形状{0}".format(shape)) ValueError:输入形状错误(4,128)

Traceback (most recent call last): File "/home/zaverichintan/PycharmProjects/WBC_identification/neural/trial.py", line 91, in nn.fit(X_train, y_train) File "/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sknn/mlp.py", line 383, in fit ys = [lb.fit_transform(y[:,i]) for i, lb in enumerate(self.label_binarizers)] File "/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/base.py", line 494, in fit_transform return self.fit(X, **fit_params).transform(X) File "/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py", line 335, in transform sparse_output=self.sparse_output) File "/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py", line 497, in label_binarize y = column_or_1d(y) File "/home/zaverichintan/miniconda2/lib/python2.7/site-packages/sklearn/utils/validation.py", line 563, in column_or_1d raise ValueError("bad input shape {0}".format(shape)) ValueError: bad input shape (4, 128)

推荐答案

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

your in1, in2,....inN are 2D arrays that are 128x128 you have to convert them all to 1D arrays of 16384. in1.shape should print (16384,) and X_train.shape should print (4,16384). You can use numpy arrays and apply the [reshape][1] function. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

这篇关于在sklearn神经网络中使用图像训练CNN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆