Как преобразовать массивы numpy в стандартный формат TensorFlow?

У меня есть два массива numpy:

  • Один содержит изображения капчи.
  • Другой содержит соответствующие метки (в формате вектора one-hot).

**Я хочу загрузить их в TensorFlow, чтобы классифицировать их с помощью нейронной сети. Как это можно сделать?

Какую форму должны иметь массивы numpy?

Дополнительная информация - Мои изображения имеют размер 60 (высота) на 160 (ширина) пикселей каждое, и каждое из них содержит 5 буквенно-цифровых символов. Вот пример изображения:

Каждая метка представляет собой массив 5 на 62.

Вы можете использовать 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()

Вот ссылка на документацию по этому методу:

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

Комментарии (0)

Для этого можно использовать метод tf.pack (tf.stack в TensorFlow 1.0.0). Вот как упаковать случайное изображение типа numpy.ndarray в тензор:

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()

UPDATE: для преобразования объекта Python в тензор можно использовать функцию tf.convert_to_tensor.

Комментарии (2)

Вы можете использовать заполнители и feed_dict.

Предположим, у нас есть такие массивы numpy:

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

Вы можете объявить два заполнителя:

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

Затем, используйте эти держатели (X и Y) в вашей модели, стоимости и т.д.: model = tf.mul(X, w) ... Y ... ...

Наконец, когда вы запустите модель/стоимость, скормите массивы numpy с помощью feed_dict:

with tf.Session() as sess:
.... 
    sess.run(model, feed_dict={X: trY, Y: trY})
Комментарии (3)