如果您对如何在TensorFlow中输入自己的数据感兴趣,可以查看本教程。
我也写与CS230的最佳做法指南在斯坦福这里。
新答案(带有
tf.data)和带有标签
随着
tf.datain的引入
r1.4,我们可以创建一批没有占位符且没有队列的图像。步骤如下:
- 创建一个包含图像文件名的列表和相应的标签列表
- 创建
tf.data.Dataset
读取这些文件名和标签 - 预处理数据
- 从创建一个迭代器,该迭代器
tf.data.Dataset
将产生下一批
代码是:
# step 1filenames = tf.constant(['im_01.jpg', 'im_02.jpg', 'im_03.jpg', 'im_04.jpg'])labels = tf.constant([0, 1, 0, 1])# step 2: create a dataset returning slices of `filenames`dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))# step 3: parse every image in the dataset using `map`def _parse_function(filename, label): image_string = tf.read_file(filename) image_depred = tf.image.depre_jpeg(image_string, channels=3) image = tf.cast(image_depred, tf.float32) return image, labeldataset = dataset.map(_parse_function)dataset = dataset.batch(2)# step 4: create iterator and final input tensoriterator = dataset.make_one_shot_iterator()images, labels = iterator.get_next()
现在我们可以直接运行,
sess.run([images, labels])而无需通过占位符提供任何数据。
旧答案(使用TensorFlow队列)
概括起来,您有多个步骤:
- 创建文件名列表(例如:图像的路径)
- 创建一个TensorFlow 文件名队列
- 读取和解码每个图像,将它们调整为固定大小(批处理必需)
- 输出一批这些图像
最简单的代码是:
# step 1filenames = ['im_01.jpg', 'im_02.jpg', 'im_03.jpg', 'im_04.jpg']# step 2filename_queue = tf.train.string_input_producer(filenames)# step 3: read, depre and resize imagesreader = tf.WholeFileReader()filename, content = reader.read(filename_queue)image = tf.image.depre_jpeg(content, channels=3)image = tf.cast(image, tf.float32)resized_image = tf.image.resize_images(image, [224, 224])# step 4: Batchingimage_batch = tf.train.batch([resized_image], batch_size=8)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)