2017-02-20 2 views
0

Я новичок в тензорном потоке. Я занимался кодированием с помощью этого tutorial code. Больше всего код имел смысл для меня, но в некоторых случаях я застрял.Кажется непоследовательным, как метод tenorflow позволяет мне указать размер переменной длины

import tensorflow as tf 
x = tf.placeholder("float", [None, n_steps, n_input]) 
x = tf.transpose(x, [1, 0, 2]) 
x = tf.reshape(x, [-1, n_input]) 

С tf.placholder функции я должен указать переменную длину dimesion с None. Но с tf.reshape мне пришлось использовать -1, а не None. В документации для двух функций оба соответствующих аргумента имеют имя shape. Поэтому я чувствую себя потерянным здесь. У них действительно есть разные значения? Или это просто небольшая ошибка дизайна разработчиков tensorflow?

ответ

2

Вы можете понять это так: в заполнителе значение «Нет» указывает: «может быть любое значение». Как и в вашем случае: у вас размер партии, который может быть чем угодно. В функции изменения формы -1 указывает «какое бы значение не осталось для работы этой фигуры». В вашем случае ваш x получает форму (пакетный * n_steps), так как это форма x должна соответствовать тем же данным в матрице.

Интересное примечание: вы можете использовать несколько значений None в заполнитель (указать размер партии, любую ширину и высоту изображения) ... Но вы не можете использовать несколько значений -1 в функции изменения формы!

+0

В частности, форма ['-1'] выравнивается в 1-D ... –

Смежные вопросы