¿Cómo convertir matrices numpy al formato estándar de TensorFlow?

Tengo dos matrices numpy:

  • Uno que contiene las imágenes captcha
  • Otro que contiene las etiquetas correspondientes (en formato vectorial one-hot)

**Quiero cargarlos en TensorFlow para poder clasificarlos usando una red neuronal. ¿Cómo puedo hacerlo?

¿Qué forma deben tener las matrices numpy?

Información adicional - Mis imágenes son de 60 (alto) por 160 (ancho) píxeles cada una y cada una de ellas tiene 5 caracteres alfanuméricos. Aquí está una imagen de ejemplo:

Cada etiqueta es una matriz de 5 por 62.

Puede utilizar tf.convert_to_tensor():

import tensorflow as tf
import numpy as np

data = [[1,2,3],[4,5,6]]
data_np = np.asarray(data, np.float32)

data_tf = tf.convert_to_tensor(data_np, np.float32)

sess = tf.InteractiveSession()  
print(data_tf.eval())

sess.close()

Aquí'hay un enlace a la documentación de este método:

https://www.tensorflow.org/api_docs/python/tf/convert_to_tensor

Comentarios (0)

Puedes usar el método tf.pack (tf.stack en TensorFlow 1.0.0) para este propósito. A continuación se muestra cómo empaquetar una imagen aleatoria de tipo numpy.ndarray en un Tensor:

import numpy as np
import tensorflow as tf
random_image = np.random.randint(0,256, (300,400,3))
random_image_tensor = tf.pack(random_image)
tf.InteractiveSession()
evaluated_tensor = random_image_tensor.eval()

ACTUALIZACIÓN: para convertir un objeto Python en un Tensor se puede utilizar la función tf.convert_to_tensor.

Comentarios (2)

Puede utilizar marcadores de posición y feed_dict.

Supongamos que tenemos matrices numpy como estas:

trX = np.linspace(-1, 1, 101) 
trY = 2 * trX + np.random.randn(*trX.shape) * 0.33 

Puedes declarar dos marcadores de posición:

X = tf.placeholder("float") 
Y = tf.placeholder("float")

A continuación, utilice estos marcadores de posición (X e Y) en su modelo, coste, etc: modelo = tf.mul(X, w) ... Y ... ...

Finalmente, cuando ejecutes el modelo/coste, alimenta las matrices numpy usando feed_dict:

with tf.Session() as sess:
.... 
    sess.run(model, feed_dict={X: trY, Y: trY})
Comentarios (3)