我正在尝试训练分类器以识别我的图像中的标签上的不同形状(圆圈,矩形和空白 - 下面的例子)并且认为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等时发生的事情)。
答案 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]]])