Ошибка TypeEr: данные изображения не могут быть преобразованы в плавающее с помощью plt.imshow после импорта с помощью tf.io.decode_jpeg - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь загрузить файл с помощью Tensorflow и визуализировать результат, но я получаю TypeError: данные изображения не могут быть преобразованы в плавающее

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 Ответ

2 голосов
/ 17 апреля 2019

Не уверен насчет вашей версии tenorflow.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)

enter image description here

Или вы можете запустить динамические вычислительные графики с помощью tf.enable_eager_execution() в тензорном потоке.Тот же эффект достигается с помощью приведенного выше кода.

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

По умолчанию в tenorflow2 используются динамические вычислительные графики.Вам не нужно использовать tf.enable_eager_execution().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...