Comment puis-je convertir un tenseur en un tableau vide dans TensorFlow?

comment convertir un tenseur en un tableau numpy en utilisant Tensorflow avec des fixations Python?

83
demandé sur mathetes 2015-12-04 23:55:54

5 réponses

tout tenseur retourné par Session.run ou eval est un réseau minuscule.

>>> print(type(tf.Session().run(tf.constant([1,2,3]))))
<class 'numpy.ndarray'>

ou:

>>> sess = tf.InteractiveSession()
>>> print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>

ou, de manière équivalente:

>>> sess = tf.Session()
>>> with sess.as_default():
>>>    print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>

EDIT: Pas tout tenseur retourné par Session.run ou eval() est un tableau NumPy. Les tenseurs épars, par exemple, sont retournés en tant que SparseTensorValue:

>>> print(type(tf.Session().run(tf.SparseTensor([[0, 0]],[1],[1,2]))))
<class 'tensorflow.python.framework.sparse_tensor.SparseTensorValue'>
70
répondu Lenar Hoyt 2018-03-23 01:40:11

pour convertir de nouveau du tenseur au tableau de numpy vous pouvez simplement exécuter .eval() sur le tenseur transformé.

59
répondu Rafał Józefowicz 2015-12-04 20:59:39

Vous avez besoin de:

  1. encoder le tenseur d'image dans un certain format (jpeg, png) en tenseur binaire
  2. évaluer (exécuter) le tenseur binaire dans une session
  3. turn the binaire to stream
  4. l'alimentation à l'image de PIL
  5. (optionnel) displaythe image with matplotlib

Code:

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)

ça a marché pour moi. Vous pouvez essayez dans un carnet ipython. N'oubliez pas d'ajouter la ligne suivante:

%matplotlib inline
4
répondu Gooshan 2016-04-17 14:59:12

peut-être Pouvez-vous essayer cette méthode:

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)
1
répondu lovychen 2017-03-21 11:44:59

j'ai affronté et résolu la conversion tenseur->ndarray dans le cas spécifique des tenseurs représentant des images (accusariales), obtenu avec cleverhans bibliothèque/tutoriels.

je pense que ma question/réponse ( ici ) peut être un exemple utile aussi pour d'autres cas.

je suis nouveau avec TensorFlow, la mienne est une conclusion empirique:

il semble qui tenseur.la méthode eval () peut avoir besoin, pour réussir, aussi la valeur pour l'entrée placeholders . Tensor peut fonctionner comme une fonction qui a besoin de ses valeurs d'entrée (fournies dans feed_dict ) pour retourner une valeur de sortie, par exemple

array_out = tensor.eval(session=sess, feed_dict={x: x_input})

veuillez noter que le nom du paramètre est x dans mon cas, mais je suppose que vous devriez trouver le bon nom pour l'entrée paramètre . x_input est une valeur scalaire ou un tableau contenant les données d'entrée.

Dans mon cas, la mention

était également obligatoire.

mon exemple couvre aussi la matplotlib partie de visualisation d'image, mais ceci est OT.

0
répondu Fabiano Tarlao 2018-09-22 07:41:00