Ваш вход не имеет такое же количество элементов, как ваш выходной массив. Ваш ввод - размер 9992. Ваш вывод - размер [? x 1 x 28 x 28], поскольку -1 указывает, что команда изменения формы должна определить, сколько индексов по этому измерению необходимо для размещения вашего массива. 28x28x1 - 784, поэтому любой ввод, который вы хотите изменить в этот размер, должен быть аккуратно делим на 784, чтобы он соответствовал форме вывода. 9992 не делится на 784, поэтому он генерирует ошибку ValueError. Вот минимальный пример, чтобы проиллюстрировать:
import numpy as np
data = np.zeros(2352) # 2352 is 784 x 3
out = data.reshape((-1,1,28,28)) # executes correctly - out is size [3,1,28,28]
data = np.zeros(9992) # 9992 is 784 x 12.745 ... not integer divisible
out = data.reshape((-1,1,28,28)) # throws ValueError: cannot reshape array of size 9992 into shape (1,28,28)
Итак, если вы не хотите, чтобы ValueError, вам нужно преобразовать входные данные в массив другого размера, где он будет соответствовать правильно.