类似MNIST的问题。卷积神经网络

时间:2018-02-07 06:39:43

标签: tensorflow machine-learning neural-network computer-vision mnist

这对某些人来说应该很容易,但我对Tensorflow来说有点新鲜,我的所有研究都把我带到了数千个gits,我只是好奇,如果有一个更简单的替代品,对于初学者。我有一个想法,它输入一个200x260彩色图像,并输出1-10之间的单热矢量。我意识到它与MNIST非常相似,但是Tensorflow没有关于mnist库如何将其图像转换为可用形式的任何文档。有没有人有任何想法将大约200张图像(是的,我知道,小)的文件夹变成可用的形式?我已经有了我的热门载体。另外,我将占位符形状设置为tf.placeholder(tf.float32,[None, 200, 260, 3])这样可行吗?我真的更喜欢保持颜色。感谢您的任何提示!

2 个答案:

答案 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。