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

MNIST-like issue. Convolutional Neural Network

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

首先,您可以使用 imreadskimage

导入所有图像

例如:

my_image = skimage.io.imread('./path/myimage.png')

然后,如果所有这些都是您想要的大小 (200x260),那么您可以通过将它们全部除以 255(标准化为 0 到 1 之间的值)来标准化它们。如果没有,您可以使用 skimage 中的 resize,这将自动为您调整图像大小和标准化。

例如

my_image = skimage.transform.resize(my_image, (200, 260))

要将其可视化,您可以使用 matplotlib.pyplot 中的 imshow 绘制图像。

为了Tensorflow内置的方便的next_batch抓取下一批的功能,可以使用下面的代码

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 创建的占位符看起来正确。

一开始我也为此苦苦挣扎,但我知道将数据导入 tensorflow 的最佳方法是将图像转换为 tfRecord 格式。特别是如果您有一个不适合 RAM 的大型数据集。这样 tensorflow 就可以根据需要加载你的数据(你需要提供输入函数来将你的文件转换回来)。 虽然这可能 be/certainly 不是最简单的方法,但如果您想添加更多图像,它可能是长 运行 中最好的方法。

最简单的方法就是使用 pillow 或任何其他图像库加载图像(我假设你使用带有 python 的 tensorflow)并在 运行ning 时将它们交给 tensorflow你的会话。