TensorFlow TFRecords 读取一张特定图像
TensorFlow TFRecords read one specific image
我只想从我用 build_image_data.py 创建的 TFRecords 文件加载一张图像,目录结构为:
├── train
| ├── chef
| ├── data0.png
| ├── ...
| └── data5467.png
| ├── chicken
| ├── data0.png
| ├── ...
| └── data2098.png
| ├── parasaurolophus
| ├── data0.png
| ├── ...
| └── data2977.png
| └── Trex
| ├── data0.png
| ├── ...
| └── data2841.png
├── validation
| ├── ...
├── build_image_data.py
└── labels.txt
生成一个文件:train-00000-of-00001
包含上面的所有图像(124MB 二进制文件)。
现在我想从 TFRecords 文件中读取第一张图片,应该是 train/chef/data0.png
。我该怎么做?
当所有图像都存储在同一个 TFRecords 文件中时,如何在测试时从我的自定义数据集中读取单个特定图像?
第一个问题。
您需要一个管道来解析 tfrecords 文件,它应该是这样的:
reader = tf.TFRecordReader()
queue = tf.train.string_input_producer([you_tfrecords_file_name])
_, serialized = reader.read(queue)
features = tf.parse_single_example(serialied, features={you_features_dict})
image = features[your_image_name]
image.set_shape(you_image_shape)
在此之后,您可以 运行 您的图像输出为 np.ndarray 类型
sess.run(image)
每次调用此行代码时,一张图像将按照写入 tfrecords 文件的顺序出队
第二个问题,当你将所有图像转换为 tfrecords 时,很难用队列作为输入进行验证,我个人建议你将训练图像转换为 train.tfrecords
并将有效图像转换为 valid.tfrecords
和使用共享变量为这两个输入获取两个 logits,有关详细信息,请参阅
我只想从我用 build_image_data.py 创建的 TFRecords 文件加载一张图像,目录结构为:
├── train
| ├── chef
| ├── data0.png
| ├── ...
| └── data5467.png
| ├── chicken
| ├── data0.png
| ├── ...
| └── data2098.png
| ├── parasaurolophus
| ├── data0.png
| ├── ...
| └── data2977.png
| └── Trex
| ├── data0.png
| ├── ...
| └── data2841.png
├── validation
| ├── ...
├── build_image_data.py
└── labels.txt
生成一个文件:train-00000-of-00001
包含上面的所有图像(124MB 二进制文件)。
现在我想从 TFRecords 文件中读取第一张图片,应该是 train/chef/data0.png
。我该怎么做?
当所有图像都存储在同一个 TFRecords 文件中时,如何在测试时从我的自定义数据集中读取单个特定图像?
第一个问题。 您需要一个管道来解析 tfrecords 文件,它应该是这样的:
reader = tf.TFRecordReader()
queue = tf.train.string_input_producer([you_tfrecords_file_name])
_, serialized = reader.read(queue)
features = tf.parse_single_example(serialied, features={you_features_dict})
image = features[your_image_name]
image.set_shape(you_image_shape)
在此之后,您可以 运行 您的图像输出为 np.ndarray 类型
sess.run(image)
每次调用此行代码时,一张图像将按照写入 tfrecords 文件的顺序出队
第二个问题,当你将所有图像转换为 tfrecords 时,很难用队列作为输入进行验证,我个人建议你将训练图像转换为 train.tfrecords
并将有效图像转换为 valid.tfrecords
和使用共享变量为这两个输入获取两个 logits,有关详细信息,请参阅