我正在尝试将我的Caffe代码调整为tensorflow。我想知道转换我的train.txt和test.txt的最佳方法是什么,以便为tensorflow工作。
在我的train.txt中,文件如下:
/folder/filename1.jpg 1
/folder/filename2.jpg 2
...
第一列是图像名称,第二列是类标签
谢谢!
答案 0 :(得分:3)
我假设您想要使用数字标签获取一批大小相同的图像。我们将使用tf.decode_csv()
来解析文本tf.read_file()
以将JPEG数据作为字符串加载tf.image.decode_jpeg()
以将其解析为密集张量,最后使用tf.train.batch()
来构建将解析后的数据转换为一批图像。其中许多功能都有很多配置选项,因此请参阅文档以获取更多自定义详细信息。
$("#randData td").eq(1).nextUntil("tr").hide();
此示例广泛使用TensorFlow预取来加载示例。 TensorFlow文档有how-to that explains how to use the prefetching feature,但最重要的是要注意,您必须在会话开始时调用# Set options here for whether to repeat, etc.
filename_producer = tf.string_input_producer(["train.txt"], ...)
# Read lines from the file, one at a time.
line_reader = tf.TextLineReader()
next_line = line_reader.read(filename_producer)
# Parse line into a filename and an integer label.
image_filename, label = tf.decode_csv(
next_line, [tf.constant([], dtype=tf.string), tf.constant([], dtype=tf.int32)],
field_delim=" ")
# Read the image as a string.
image_bytes = tf.read_file(image_filename)
# Convert the image into a 3-D tensor (height x width x channels).
image_tensor = tf.image.decode_jpeg(image_bytes, ...)
# OPTIONAL: Resize your image to a standard size if they are not already.
HEIGHT = ...
WIDTH = ...
image_tensor = tf.image.resize_image_with_crop_or_pad(image_tensor, HEIGHT, WIDTH)
# Create a batch of images.
BATCH_SIZE = 32
images, labels = tf.train.batch([image_tensor, label], BATCH_SIZE, ...)
# [...build the rest of your model...]
才能开始预取:
tf.train.start_queue_runners()