如何在图像上训练scikit-neuralnetwork

时间:2015-08-18 11:25:03

标签: python numpy machine-learning scikit-learn neural-network

我正在尝试训练分类器以识别我的图像中的标签上的不同形状(圆圈,矩形和空白 - 下面的例子)并且认为scikit-neuralnetwork可能能够提供帮助,因为我没有取得多大成功使用SVM。我在他们的网站上找到了文档,但我不确定用于训练网络的数据格式应该是什么。

from sknn.mlp import Classifier, Convolution, Layer

nn = Classifier(
    layers=[
        Convolution("Rectifier", channels=8, kernel_shape=(3,3)),
        Layer("Softmax")],
    learning_rate=0.02,
    n_iter=5)
nn.fit(X_train, y_train)

我的灰度图像是24 * 24像素,因此我可以使用由这些矩阵组成的NumPy数组(“X_train”)吗?这样我就不必将每个图像拼合成一个形成我的训练矩阵的行,并且我丢失了所有的形状信息(这是我训练我的SVM,LDA,PCA等时发生的事情)。

enter image description here

2 个答案:

答案 0 :(得分:2)

无需压平数据。只需输入一系列矩阵。在您的情况下,X_train.shape将是(NUM_OF_EXAMPLES,24,24)。看看digits example

答案 1 :(得分:1)

你必须对集合中的每个样本使用多维表示,numpy允许它。

您可以考虑以下示例作为训练集中的4个图像,每个图像的大小(2,3)

>>> np.arange(2*3*4).reshape(4,2,3)
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

        [[ 6,  7,  8],
         [ 9, 10, 11]],

        [[12, 13, 14],
         [15, 16, 17]],

        [[18, 19, 20],
         [21, 22, 23]]])