Подтвердить что ты не робот

Тензорный поток: как подать переменную-заполнителя тензором?

У меня есть переменная-заполнителя, которая ожидает пакет входных изображений:

input_placeholder = tf.placeholder(tf.float32, [None] + image_shape, name='input_images')

Теперь у меня есть 2 источника входных данных:
1) тензор и 2) некоторые числовые данные.

Для входных данных numpy я знаю, как передавать данные переменной-заполнителю:

sess = tf.Session()
mLoss, = sess.run([loss], feed_dict = {input_placeholder: myNumpyData})

Как я могу передать тензор этой переменной-заполнителю?

mLoss, = sess.run([loss], feed_dict = {input_placeholder: myInputTensor})

дает мне ошибку:

TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.

Я не хочу преобразовывать тензор в массив numpy с помощью .eval(), так как это замедлит мою программу, есть ли другой способ?

4b9b3361

Ответ 1

Вы можете использовать feed_dict для подачи данных в не-заполнители. Итак, сначала подключите свой график потока данных непосредственно к вашему тендерному источнику данных myInputTensor (т.е. Не используйте местозаполнитель). Затем, когда вы хотите работать с вашими данными numpy, вы можете эффективно маскировать myImportTensor с помощью myNumpyData, например:

mLoss, = sess.run([loss], feed_dict={myImportTensor: myNumpyData})

[Я все еще пытаюсь выяснить, как это сделать с несколькими тензорными источниками данных.]

Ответ 2

Это обсуждалось в GitHub в 2016 году, и, пожалуйста, проверьте здесь. Вот ключевой момент concretevitamin:

Следует отметить, что Тензор - это просто символический объект. Значения вашего feed_dict являются фактическими значениями, например. Nump ndarry.

Тензор как символический объект течет на графике, а фактические значения находятся за его пределами, тогда мы можем передавать фактические значения только в график, а символический объект не может существовать вне графика.

Ответ 3

Это работает для меня в последней версии... может быть, у вас более старая версия TF?

a = tf.Variable(1)
sess.run(2*a, feed_dict={a:5}) # prints 10