我正在尝试使用tf.data API读取TFRecord文件。
import tensorflow as tf
from PIL import Image
import numpy as np
import os
def train_input_fn():
filenames = ["mytrain.tfrecords"]
dataset = tf.data.TFRecordDataset(filenames)
def parser(record):
keys_to_features = {
"image_data": tf.FixedLenFeature((), tf.string, default_value=""),
"date_time": tf.FixedLenFeature((), tf.int64, default_value=""),
"label": tf.FixedLenFeature((), tf.int64,
default_value=tf.zeros([], dtype=tf.int64)),
}
parsed = tf.parse_single_example(record, keys_to_features)
image = tf.decode_jpeg(parsed["image_data"])
image = tf.reshape(image, [128, 128, 3])
label = tf.cast(parsed["label"], tf.int32)
return {"image_data": image, "date_time": parsed["date_time"]}, label
dataset = dataset.map(parser)
dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(32)
dataset = dataset.repeat(1)
iterator = dataset.make_one_shot_iterator()
features, labels = iterator.get_next()
return features, labels
output = train_input_fn()
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord = coord)
for i in range(230):
image, label = sess.run(output)
img = Image.fromarray(image, 'RGB')
img.save(cwd+str(i) + '_''Label_'+str(l)+'.jpg')
print(image, label)
coord.request_stop()
coord.join(threads)
回溯(最近通话最近): 文件“ E:/Tensorflow/Wenshan_Cai_Nanoletters/tf_data.py”,第34行,在 输出= train_input_fn() train_input_fn中的文件“ E:/Tensorflow/Wenshan_Cai_Nanoletters/tf_data.py”,第25行 TypeError:预期为int64,取而代之的是类型为“ str”的
。答案 0 :(得分:0)
请注意错误日志中的TypeError: Expected int64, got '' of type 'str' instead
。您的代码中有一个错误。
错误
在以下行中:
"date_time": tf.FixedLenFeature((), tf.int64, default_value=""),
tf.int64
类型变量的默认值指定为字符串""
。
修复
因此,假设您的默认默认值为0,则应将行更改为:
"date_time": tf.FixedLenFeature((), tf.int64, default_value=0),
希望有帮助。