Я предполагаю, что вы работаете с MNIST или набором данных, подобным этому, с набором изображений 28 x 28. Возможно, эти изображения представлены в массиве длиной 784.
x = []
for _ in range(10):
x.append(range(28 ** 2))
np.array(x).reshape([-1, 28, 28, 1])
Это преобразует ваш набор данных в набор 28 x 28 x 1
матриц, что было бы полезно, если вы пытаетесь учиться на изображении, которое 28 x 28
и имеет только один цвет.
также определит, что у вас есть 10
изображений, и преобразует ваш массив в 10 matrices
с формой 28 x 28 x 1
.
np.array(x).reshape([-1, 28, 28, 1]).shape == (10, 28, 28, 1)
Причина, по которой 28 x 28 x 1
вместо 28 x 28
иногда заключается в том, что это более понятный способ интерпретации наличия 28 x 28
квадратов и одного цвета. Нет необходимости добавлять одномерную ширину, если она вас смущает, вы также можете легко сопоставить ее с матрицей с формой 28 x 28
. Но представьте, что у вас есть набор данных цветных изображений, вы, вероятно, сопоставили бы его с 28 x 28 x 3
, чтобы указать, что это изображение с 28 x 28
квадратами, и каждый квадрат имеет значение для каждого из трех цветов.
Следовательно, это набор -1
изображений, где -1
означает вычисление правильного количества изображений (10)
, и у каждого изображения есть значения 28 * 28
, и каждому значению присваивается свой размер (1)
.