2016-07-02 5 views
4

Как я могу обучить сеть в TensorFlow с помощью миниатюрных данных? В учебнике Глубоко MNIST, они используют:Обучение миниатюре тензорного потока

for i in range(1000): 
    batch = mnist.train.next_batch(50) 
    train_step.run(feed_dict={x: batch[0], y_: batch[1]}) 

Мой вопрос - это x и y_ переменных с размерами, подходящими к одному примеру, а batch[0], batch[1] списки таких входов и выходов? в этом случае TensorFlow автоматически добавит градиенты для каждого примера обучения в эти списки? или я должен создать свою модель так, чтобы x и y_ получили весь мини-бар?

Моя проблема заключается в том, что, когда я пытаюсь кормить его список для каждого заполнителя, он пытается ввести весь список для заполнителя, и поэтому я получаю несоответствие размера: Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)', где n является размером minibatch и m является индивидуальный размер ввода.

Спасибо.

ответ

9

В учебнике MNIST x и y_ заполнители с определенной формой:

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

shape=[None, 784] означает, что этот заполнитель имеет 2 размерность.

Таким образом, чтобы ответить на первый вопрос:

являются х и у- переменные с размерами подходит к одному примеру

Первое измерение может содержать неопределенное количество элементов (так, 1 , 2, ... 50 ...), а во втором измерении могут содержаться символы 784 = 28 * 28 (которые являются особенностями одного изображения MNIST).

Если вы загружаете график списком python с формой [1, 784] или [50, 784], то это абсолютно то же самое для tenorflow, оно может справиться с этим без каких-либо проблем.

batch [0], batch [1] - списки таких входов и выходов? В учебнике они определяют пакетный вызов batch = datasets.train.next_batch(50). Таким образом:

  • партии [0] представляет собой список с формой [50, 784]
  • партии [1] представляет собой список с формой [50, 10]

будет ли TensorFlow автоматически добавлять градиенты для каждого примера обучения в этих списках? или я должен создать свою модель так, чтобы x и y_ получали всю мини-патч?

Tensorflow обрабатывает это для вас.

Ошибка, которую вы сообщаете Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)' - ошибка несоответствия формы.

Вы не изменяете входы, чтобы они имели одинаковую форму заполнителя.

+0

«Tensorflow обрабатывает это для вас». - но моя функция стоимости по-прежнему должна будет суммироваться по неизвестному числу выборок (которые будут установлены при подаче прогона), правильно? Дело не в том, что я пишу функцию затрат для одного образца, и это каким-то образом расширяет его. – yoki

+1

Да, это правильно. Функция tf.reduce * поможет вам суммировать/усреднить по неизвестному числу образцов – nessuno

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