2

Я, следующий за TensorFlow АркадамПочему тензор переменных x, преобразованный с -1 в учебник MNIST для тензорного потока?

Первоначально х определяются как

x = tf.placeholder(tf.float32, shape=[None, 784])

Позже он перекраивает й, я пытаюсь понять, почему.

Чтобы применить слой, мы сначала переформатируем x на 4d-тензор со вторым и третьим размерами, соответствующими ширине и высоте изображения, и окончательный размер, соответствующий количеству цветовых каналов.

x_image = tf.reshape(x, [-1,28,28,1])

Что -1 среднее в векторе перепрофилирования и почему х переформируется?

+0

Каково измерение 'x'? И что именно ваш вопрос: почему мы имеем 4d тензор или что -1 означает? –

+0

Отредактировав вопрос, почему x перестроен и что -1 означает –

ответ

4

1) Что -1 среднее в векторе перепрофилирования

Из документации reshape:

Если один компонент формы является особое значение -1, размер этого измерение вычисляется так, чтобы общий размер оставался постоянным. В особой форме форма [-1] выравнивается в 1-D. Не более одного компонента формы может быть -1.

это стандартная функция и доступна также в numpy. В основном это означает - у меня нет времени рассчитать все размеры, поэтому сделайте это для меня. В вашем случае, потому что x * 28 * 28 * 1 = 784 так ваш -1 = 1

2) почему х переформируется

Они планируют использовать свертку для классификации изображений. Поэтому им нужно использовать некоторую пространственную информацию. Текущие данные 1-мерные. Поэтому они преобразуют его в 4 измерения. Я не знаю точки четвертого измерения, потому что, по-моему, они могли использовать только (х, у, цвет). Или даже (x, y). Попробуйте изменить их форму и свертку, и, скорее всего, вы получите такую ​​же точность.

+1

Я думаю, что подпись уровня conv2d - [batch_size, h, w, channels] (https://www.tensorflow.org/api_docs/python/ nn/convolution # conv2d), поэтому он не будет работать иначе. – guinny