Сколько узлов во входных и выходных слоях MLPClassifier sklearn для задачи классификации цифр MNIST

Я следую примеру на https://scikit-learn.org/stable/auto_examples/neural_networks/plot_mnist_filters.html#sphx-glr-auto-examples-neural-networks-plot-mnist-filters-py. и я пытаюсь выяснить, правильно ли я понимаю количество узлов во входном и выходном слоях в примере. Требуемый код выглядит следующим образом:

import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml
from sklearn.neural_network import MLPClassifier

print(__doc__)

# Load data from https://www.openml.org/d/554
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
X = X / 255.

# rescale the data, use the traditional train/test split
X_train, X_test = X[:60000], X[60000:]
y_train, y_test = y[:60000], y[60000:]

mlp = MLPClassifier(hidden_layer_sizes=(50,), max_iter=10, alpha=1e-4,
                    solver='sgd', verbose=10, random_state=1,
                    learning_rate_init=.1)

mlp.fit(X_train, y_train)
score = mlp.score(X_test, y_test)

Согласно https://dudeperf3ct.github.io/mlp/mnist/2018/10/08/Force-of-Multi-Layer-Perceptron/, в примере указано 784 узла во входном слое (который, я полагаю, из shape данных ) и 10 узлов для выходного слоя, по 1 на каждую цифру.

Это относится к MLPClassifier в приведенном выше коде?

Спасибо, и некоторые разъяснения будут отличными!


person Stoner    schedule 11.01.2020    source источник


Ответы (1)


Ваше понимание правильное. Размер изображения цифровых данных MNIST составляет 28x28, который сглаживается до 784, а выходной размер равен 10 (по одному для каждого числа от 0 до 9). MLPClassifier неявно проектирует входной и выходной слои на основе данных, предоставленных в методе Fit.

Ваша конфигурация NN будет выглядеть следующим образом: Вход: 200 x 784 Скрытый слой: 784 x 50 (размер объекта: 200 x 50) Выходной слой: 50 x 10 (размер элемента: 200 x 10)

Размер пакета по умолчанию в MLPClassifier составляет 200, поскольку размер обучающих данных составляет 60000.

person Vinu    schedule 11.01.2020