我正在撰寫一個將影像保存到 TFRecord 檔案的函式,以便隨后使用 TensorFlow 的資料 API 進行讀取。但是,當嘗試創建 TFRecord 來保存它時,我收到以下錯誤訊息:
TypeError: <tf.Tensor ...> has type <class 'tensorflow.python.framework.ops.EagerTensor'>, but expected one of: numbers.Real
用于創建 TFRecord 的函式是:
def create_tfrecord(filepath, label):
image = tf.io.read_file(filepath)
image = tf.image.decode_jpeg(image, channels=1)
image = tf.image.convert_image_dtype(image, tf.float32)
image = tf.image.resize(image, [299, 299])
tfrecord = Example(
features = Features(
feature = {
'image' : Feature(float_list=FloatList(value=[image])),
'label' : Feature(int64_list=Int64List(value=[label]))
})).SerializeToString()
return tfrecord
如果您需要更多資訊,請告訴我。
uj5u.com熱心網友回復:
問題是這image是一個張量,但您需要一個浮點值串列。嘗試這樣的事情:
import tensorflow as tf
def create_tfrecord(filepath, label):
image = tf.io.read_file(filepath)
image = tf.image.decode_jpeg(image, channels=1)
image = tf.image.convert_image_dtype(image, tf.float32)
image = tf.image.resize(image, [299, 299])
tfrecord = tf.train.Example(
features = tf.train.Features(
feature = {
'image' : tf.train.Feature(float_list=tf.train.FloatList(value=image.numpy().ravel().tolist())),
'label' : tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))
})).SerializeToString()
return tfrecord
create_tfrecord('/content/result_image.png', 1)
虛擬資料是這樣創建的:
import numpy
from PIL import Image
imarray = numpy.random.rand(300,300,3) * 255
im = Image.fromarray(imarray.astype('uint8')).convert('RGB')
im.save('result_image.png')
如果你想重現這個例子。加載 tf-record 時,您只需要將影像重塑為原始大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/431841.html
上一篇:在Python中使用view_as_blocks更改塊后生成影像
下一篇:FasterRCNN邊界框坐標
