【问题标题】:How to Train scikit-neuralnetwork on images如何在图像上训练 scikit-neuralnetwork
【发布时间】:2015-11-11 07:28:41
【问题描述】:

我正在尝试训练一个分类器来识别图像中标签上的不同形状(圆形、矩形和空白 - 下面的示例),并认为 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 等时发生的情况)。

【问题讨论】:

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


【解决方案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]]])

【讨论】:

    【解决方案2】:

    无需展平数据。只需提供一组矩阵。在您的情况下,X_train.shape 将是 (NUM_OF_EXAMPLES, 24, 24)。看看digits example

    【讨论】:

    • 非常感谢!我用我的图像数据尝试了这个例子,几乎没有对代码进行编辑,我得到了 75% 的正确预测率!您对我可以去哪里了解更多关于分类器中的图层设置有什么建议吗?我觉得如果我使用这些设置,我可以将我的准确性提高到 90 年代。
    • 使用所有超参数设置正确的 NN 拓扑并非易事。查看this paper,了解每个超参数对模型性能的影响。
    • 尝试为每个形状训练一个单独的神经网络。您可能会获得更高的准确性。训练数据越多,错误越少。
    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 2015-06-03
    • 2021-05-04
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2017-04-16
    • 2014-04-08
    相关资源
    最近更新 更多