当前位置:  开发笔记 > 编程语言 > 正文

TensorFlow:培训我自己的形象

如何解决《TensorFlow:培训我自己的形象》经验,为你挑选了1个好方法。

我是TensorFlow的新手.我正在寻找有关图像识别的帮助,我可以在那里训练自己的图像数据集.

有没有训练新数据集的例子?



1> Olivier Moin..:

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


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

随着引进tf.datar1.4,我们可以创建一个批处理图像没有占位符的,没有队列.步骤如下:

    创建一个列表,其中包含图像的文件名和相应的标签列表

    创建tf.data.Dataset读取这些文件名和标签

    预处理数据

    从中创建一个迭代器tf.data.Dataset将产生下一批

代码是:

# step 1
filenames = 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_decoded = tf.image.decode_jpeg(image_string, channels=3)
    image = tf.cast(image_decoded, tf.float32)
    return image, label

dataset = dataset.map(_parse_function)
dataset = dataset.batch(2)

# step 4: create iterator and final input tensor
iterator = dataset.make_one_shot_iterator()
images, labels = iterator.get_next()

现在我们可以直接运行sess.run([images, labels])而无需通过占位符提供任何数据.


旧答案(使用TensorFlow队列)

总结一下,你有多个步骤:

    创建文件名列表(例如:图像的路径)

    创建TensorFlow 文件名队列

    读取和解码每个图像,将其大小调整为固定大小(批处理所需)

    输出一批这些图像


最简单的代码是:

# step 1
filenames = ['im_01.jpg', 'im_02.jpg', 'im_03.jpg', 'im_04.jpg']

# step 2
filename_queue = tf.train.string_input_producer(filenames)

# step 3: read, decode and resize images
reader = tf.WholeFileReader()
filename, content = reader.read(filename_queue)
image = tf.image.decode_jpeg(content, channels=3)
image = tf.cast(image, tf.float32)
resized_image = tf.image.resize_images(image, [224, 224])

# step 4: Batching
image_batch = tf.train.batch([resized_image], batch_size=8)


如果你有训练图像的标签,你也应该把它们作为输入并用图像批处理:`image_batch,label_batch = tf.train.batch([resized_image,label],batch_size = 8)`.然后你必须构建一个模型,其中图像作为输入,标签作为输出,参考[本教程](https://www.tensorflow.org/versions/r0.8/tutorials/mnist/tf/index.html)更多信息.
你是对的,`tf.train.batch`或`tf.train.shuffle_batch`的第一个参数应该是一个列表`[image]`而不仅仅是`image`.我在代码中修复了它.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有