Как преобразовать массивы numpy в стандартный формат TensorFlow?
У меня есть два массива:
- Тот, который содержит изображения капчи
- Другой, содержащий соответствующие метки (в векторном формате)
Я хочу загрузить их в TensorFlow, чтобы я мог классифицировать их с помощью нейронной сети. Как это может быть сделано?
Какую форму должны иметь массивы?
Дополнительная информация - Мои изображения имеют размеры 60 (высота) на 160 (ширина) пикселей, каждое из которых содержит 5 буквенно-цифровых символов. Вот пример изображения:
![sample image.]()
Каждая метка представляет собой массив 5 на 62.
Ответы
Ответ 1
Вы можете использовать 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()
Ответ 2
Вы можете использовать tf.pack (tf.stack в TensorFlow 1.0.0) для этой цели. Вот как упаковать случайное изображение типа numpy.ndarray
в 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()
UPDATE: чтобы преобразовать объект Python в Tensor, вы можете использовать tf.convert_to_tensor.
Ответ 3
Вы можете использовать заполнители и 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})