5 ответов:
любой тензор, возвращенные
Session.runилиeval- это массив NumPy.>>> print(type(tf.Session().run(tf.constant([1,2,3])))) <class 'numpy.ndarray'>или:
>>> sess = tf.InteractiveSession() >>> print(type(tf.constant([1,2,3]).eval())) <class 'numpy.ndarray'>или, что то же самое:
>>> sess = tf.Session() >>> with sess.as_default(): >>> print(type(tf.constant([1,2,3]).eval())) <class 'numpy.ndarray'>EDIT: не любой тензор, возвращенные
Session.runилиeval()- это массив NumPy. Разреженные тензоры, например, возвращаются как SparseTensorValue:>>> print(type(tf.Session().run(tf.SparseTensor([[0, 0]],[1],[1,2])))) <class 'tensorflow.python.framework.sparse_tensor.SparseTensorValue'>
чтобы преобразовать обратно из тензора в массив numpy, вы можете просто запустить
.eval()на преобразованный тензор.
вам нужно:
- кодировать тензор изображения в некотором формате (jpeg, png) в двоичный тензор
- оценить (запустить) двоичный тензор в сеансе
- поверните двоичный файл в поток
- feed to PIL image
- (необязательно) отображение изображения с помощью matplotlib
код:
import tensorflow as tf import matplotlib.pyplot as plt import PIL ... image_tensor = <your decoded image tensor> jpeg_bin_tensor = tf.image.encode_jpeg(image_tensor) with tf.Session() as sess: # display encoded back to image data jpeg_bin = sess.run(jpeg_bin_tensor) jpeg_str = StringIO.StringIO(jpeg_bin) jpeg_image = PIL.Image.open(jpeg_str) plt.imshow(jpeg_image)это работает для меня. Вы можете попробовать его в культуры Просто не забудьте добавить следующее линия:
%matplotlib inline
может быть, вы можете попробовать,этот метод:
import tensorflow as tf W1 = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) array = W1.eval(sess) print (array)
я столкнулся и решил тензор->ndarray преобразование в конкретном случае тензоров, представляющих (состязательные) изображения, полученные с помощью cleverhans библиотека/учебники.
Я думаю, что мой вопрос/ответ (здесь) может быть полезным примером и для других случаев.
Я новичок в TensorFlow, мой эмпирический вывод:
кажется, что это тензор.метод eval () может потребоваться, чтобы добиться успеха, также значение для ввода заполнители. Тензор может работать как функция, которая нуждается в своих входных значениях (предоставленных в
feed_dict) для возврата выходного значения, напримерarray_out = tensor.eval(session=sess, feed_dict={x: x_input})обратите внимание, что имя -x в моем случае, но я полагаю, что вы должны найти правильное имя для ввода прототип.
x_input- скалярное значение или массив, содержащий входные данные.в моем случае также предоставления
sessбыл обязательный.мой пример также охватывает matplotlib часть визуализации изображения, но это OT.
Comments