TensorFlow:用我自己的图像训练

TensorFlow:用我自己的图像训练,第1张

TensorFlow:用我自己的图像训练

如果您对如何在TensorFlow中输入自己的数据感兴趣,可以查看本教程。
我也写与CS230的最佳做法指南在斯坦福这里。


新答案(带有
tf.data
)和带有标签

随着

tf.data
in的引入
r1.4
,我们可以创建一批没有占位符且没有队列的图像。步骤如下:

  1. 创建一个包含图像文件名的列表和相应的标签列表
  2. 创建
    tf.data.Dataset
    读取这些文件名和标签
  3. 预处理数据
  4. 从创建一个迭代器,该迭代器
    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队列)

概括起来,您有多个步骤:

  1. 创建文件名列表(例如:图像的路径)
  2. 创建一个TensorFlow 文件名队列
  3. 读取和解码每个图像,将它们调整为固定大小(批处理必需)
  4. 输出一批这些图像

最简单的代码是:

# 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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存