Понимание того, что именно нейронная сеть предсказывает в примере документации (MNIST)

Я прошел быстрый курс по нейронным сетям, чтобы лучше понять их, и теперь я пробую их для себя в R. Я следую этой документации Keras.

Как я понимаю, что происходит:

Мы вводим серию изображений и преобразуем эти изображения в числовые матрицы на основе расположения пикселей и цветов в этих пикселях. Затем мы строим модель нейронной сети, чтобы узнать структуру этих схем в зависимости от классификации (от 0 до 9). Затем мы используем модель, чтобы предсказать, к какому классу принадлежит изображение. Я буду честен и признаю, что не совсем уверен, что такое y_train и x_train. Я просто вижу это как один тренинг и один набор проверки, так что я не уверен, в чем разница между x и y.

Мой вопрос:

Я следовал шагам к T, и модель работает нормально, а прогнозы выглядят так, как в документации. В конечном итоге прогноз выглядит так: введите описание изображения здесь

Я понимаю, что это означает, что наблюдение 1 в x_test предсказывается как категория 7.

Однако, глядя на x_test, это выглядит так: введите описание изображения здесь

В каждом столбце и строке есть 0, также, если я прокручиваю дальше вниз. Это где я запутался. Я также не уверен, как я смотрю на оригинальные изображения, чтобы убедиться, насколько хорошо они их предсказывают. В конце концов, я хотел бы нарисовать число в краске или около того, а затем посмотреть, сможет ли модель это предсказать, но для этого мне нужно сначала понять, что происходит. Я чувствую, что я близко, но мне просто нужно немного подтолкнуть!

Всего 2 ответа


Я думаю, что если вы прочитаете больше о размерах входного и выходного слоя, это поможет.

В вашем примере: Входной слой: один обучающий пример изображения имеет два измерения 28 * 28, которые затем преобразуются в один вектор измерения 784. Он действует как входной слой для нейронной сети. Таким образом, для m обучающих примеров ваш входной слой будет иметь размеры (m, 784) . Говоря аналогично (для традиционных систем ML), вы можете представить, что каждый пиксель изображения преобразуется в элемент (или x1, x2, ... x784), а ваш обучающий набор представляет собой фрейм данных с m строками и 784 столбцами, которые затем подается в нейронную сеть для вычисления y_hat = f(x1,x2,x3,...x784) .

Выходной слой: как выход для нашей нейронной сети, мы хотим, чтобы он предсказывал, какое число это от 0 to 9 . Таким образом, для одного обучающего примера выходной слой имеет размерность 10, представляющую каждое число от 0 до 9, а для n примеров тестирования выходной слой будет представлять собой матрицу с размерностью n*10 . Наш y - это вектор длины n который будет что-то вроде [1,7,8,2,.....] содержащий истинное значение для каждого примера тестирования. Но чтобы соответствовать размеру выходного слоя, размерность вектора y конвертируется с использованием быстрого кодирования. Представьте себе вектор длиной 10, представляющий число 7, поместив 1 на 7-е место, а остальные позиции в нули примерно как [0,0,0,0,0,0,1,0,0,0] .

Таким образом, в вашем вопросе, если вы хотите увидеть исходное изображение, вы должны увидеть его, прежде чем преобразовывать обучающие примеры в нечто вроде image(mnist$test$x[1, , ]

Надеюсь это поможет!!


y_train - метки, а x_train - данные обучения, поэтому изображения в этом примере. Вам нужно использовать какую-то библиотеку для построения графиков. В этом примере от вас, вероятно, не требуется вводить собственные чертежи, и, если вы хотите, вам необходимо предварительно обработать их так же, как в MNIST, и передать их в модель.


Есть идеи?

10000