#python #tensorflow #matplotlib
#python #tensorflow #matplotlib
Вопрос:
Я пытаюсь загрузить файл с помощью Tensorflow и визуализировать результат, но я получаю ошибку типа: данные изображения не могут быть преобразованы в float
import tensorflow as tf
import matplotlib.pyplot as plt
image = tf.io.read_file('./my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
print(image.shape) # (?, ?, 3)
plt.imshow(image)
Ответ №1:
Не уверен в вашей версии tensorflow. TensorFlow по умолчанию использует статические вычислительные графики в 1.x
. Тип данных image
, который вы получаете Tensor
, таков, что показывает эту ошибку. Сначала создайте пользовательское изображение.
import numpy as np
from PIL import Image
np.random.seed(0)
image = np.random.random_sample(size=(256,256,3))
im = Image.fromarray(image, 'RGB')
im.save('my-image.jpg')
Затем вам нужно использовать tf.Session()
для запуска этого сеанса. Это покажет изображение, созданное выше.
import tensorflow as tf
import matplotlib.pyplot as plt
image = tf.io.read_file('my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
print(image)
with tf.Session() as sess:
plt.imshow(sess.run(image))
plt.show()
# print
Tensor("DecodeJpeg:0", shape=(?, ?, 3), dtype=uint8)
Или вы можете запустить динамические вычислительные графики с помощью tf.enable_eager_execution()
tensorflow. Тот же эффект достигается с помощью приведенного выше кода.
import tensorflow as tf
import matplotlib.pyplot as plt
tf.enable_eager_execution()
image = tf.io.read_file('my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
plt.imshow(image)
plt.show()
По умолчанию в tensorflow2 используются динамические вычислительные графики. Вам не нужно использовать tf.enable_eager_execution()
.