这对某些人来说应该很容易,但我对Tensorflow来说有点新鲜,我的所有研究都把我带到了数千个gits,我只是好奇,如果有一个更简单的替代品,对于初学者。我有一个想法,它输入一个200x260彩色图像,并输出1-10之间的单热矢量。我意识到它与MNIST非常相似,但是Tensorflow没有关于mnist库如何将其图像转换为可用形式的任何文档。有没有人有任何想法将大约200张图像(是的,我知道,小)的文件夹变成可用的形式?我已经有了我的热门载体。另外,我将占位符形状设置为tf.placeholder(tf.float32,[None, 200, 260, 3])
这样可行吗?我真的更喜欢保持颜色。感谢您的任何提示!
答案 0 :(得分:2)
首先,您可以使用imread
skimage
导入所有图片
例如:
my_image = skimage.io.imread('./path/myimage.png')
然后,如果它们都是您想要的大小(200x260),那么您可以通过将它们全部除以255(归一化为0到1之间的值)来标准化它们。如果没有,您可以使用resize
中的skimage
,这会自动调整大小并为您规范化图像。
例如
my_image = skimage.transform.resize(my_image, (200, 260))
要对其进行可视化,您可以使用imshow
中的matplotlib.pyplot
来绘制图像。
对于方便next_batch
函数来抓取Tensorflow
中内置的下一个批处理,您可以使用以下代码
i = 0
def next_batch(batch_size):
x = training_images[i:i + batch_size]
y = training_labels[i:i + batch_size]
i = (i + batch_size) % len(training_images)
return x, y
然后您可以创建CNN并训练图像。您为X
创建的占位符看起来是正确的。
答案 1 :(得分:1)
我在开始时也很努力,但我知道将数据转换为tensorflow的最佳方法是将图像转换为tfRecord格式。特别是如果您有一个不适合RAM的大型数据集。这样,tensorflow可以根据需要加载您的数据(您需要提供输入函数来转换文件)。 虽然这可能不是/肯定不是最简单的方法,但如果您想要添加更多图像,它可能是最好的方式。
最简单的方法就是使用枕头或任何其他图像库加载图像(我假设您使用python的tensorflow)并在运行会话时将它们交给tensorflow。