Я думаю, что если вы прочитаете больше о размерах входного и выходного слоев, это поможет.
В вашем примере: Входной слой: один обучающий пример изображения имеет два измерения 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]
.
Итак, в вашем вопросе, если вы хотите sh увидеть исходное изображение, вы должны увидеть его, прежде чем изменить примеры тренировок, например, image(mnist$test$x[1, , ]
Надеюсь, это поможет !!