Что это за вид и зачем его использовать? - PullRequest
0 голосов
/ 30 апреля 2018

Извините за очень неразумный вопрос. Я пытался найти ответ на это в течение некоторого времени.

Итак, я пролистал руководство по «Сверточным нейронным сетям» и нашел его, используя функцию numpy.reshape, которая выглядит следующим образом:

testX.reshape([-1, 28, 28, 1])

Это для меня китайский язык, так как я не могу себе представить, что он связан с четырьмя измерениями или является некой обратной функцией.

Редактировать: это контекст функции. Теперь я даже не уверен, что это просто функция или нет:

import tflearn.datasets.mnist as mnist
X, Y, testX, testY = mnist.load_data(one_hot=True)
X = X.reshape([-1, 28, 28, 1])
testX = testX.reshape([-1, 28, 28, 1])

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Я предполагаю, что вы работаете с 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).

0 голосов
/ 30 апреля 2018

В вашем примере (MNIST) [-1, 28, 28, 1] означает

[training_examples, hight, width, channels]

-1 для обучающих примеров, так как число неизвестно, высота и ширина должны быть четкими.

Количество каналов: для изображений в градациях серого используется 1 канал, для RBG - 3 канала. Поскольку MNIST имеет изображения в градациях серого, здесь у вас есть 1 (значения от 0 до 256).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...