如何在图像上训练 scikit-neuralnetwork
How to Train scikit-neuralnetwork on images
我正在尝试训练一个分类器来识别图像中标签上的不同形状(圆形、矩形和空白 - 下面的示例)并认为 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 等时发生的情况)。
您必须对集合中的每个样本使用多维表示,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]]])
无需扁平化数据。只需提供一组矩阵。在您的情况下,X_train.shape
将是 (NUM_OF_EXAMPLES, 24, 24)。看看digits example.
我正在尝试训练一个分类器来识别图像中标签上的不同形状(圆形、矩形和空白 - 下面的示例)并认为 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 等时发生的情况)。
您必须对集合中的每个样本使用多维表示,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]]])
无需扁平化数据。只需提供一组矩阵。在您的情况下,X_train.shape
将是 (NUM_OF_EXAMPLES, 24, 24)。看看digits example.