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