2015-12-04 4 views

ответ

37

Любой тензор возвращаемый 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'> 
51

Чтобы преобразовать обратно из тензора в массив numpy, вы можете просто запустить .eval() на преобразованный тензор.

+2

уточнить: yourtensor.eval() – vanilla

3

Вам нужно:

  1. закодировать тензор изображения в некотором формате (JPEG, PNG) в двоичный тензор
  2. оценки (выполнения) двоичный тензор в сеансе
  3. превратить бинарный файл в поток
  4. корма для PIL изображения
  5. (по желанию) displaythe изображение с 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) 

Это сработало для меня. Вы можете попробовать его в ноутбуке ipython. Только не забудьте добавить следующую строку:

%matplotlib inline 
1

Может быть, вы можете попробовать этот метод:

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) 
Смежные вопросы