你如何为 MNIST “导入”图像数据?
Posted
技术标签:
【中文标题】你如何为 MNIST “导入”图像数据?【英文标题】:How do you "import" image data for MNIST? 【发布时间】:2019-11-23 06:04:32 【问题描述】:所以我一直在使用 Tensorflow 的神经网络教程。我完成了本质上只是 MNIST 的“基本分类”,并且一直致力于制作我自己的自定义变体,作为一个小小的思想实验。除了将数据集放入可用的形式之外,一切都是不言自明的,因为本教程使用预制的数据集,并且看起来像是偷工减料。我只想知道如何将彩色照片放入可用的数据中。我假设这只是一个一维数组。作为一个附带问题,如果将 2d 照片存储在 1d 数组中(如果它不是 CNN),神经网络会失去任何效力吗?
【问题讨论】:
使用 keras/tensorflow 的 minst 数字和时尚数据集是单色二维数组。彩色照片会有颜色通道,所以这是一个 3 维数组。 好的,谢谢你的信息。所以根据我的问题,我该如何导入? @MikeSperry ^^^ 【参考方案1】:Keras 中包含的数据集是预制的,并且通常经过预处理,以便初学者可以轻松地尝试使用它们。对于使用您自己的图像,例如猫狗图像分类问题,您可以将图像放在两个单独的目录中,例如,
在images/cats
和images/dogs
。
现在,我们解析这些目录中的每一个图像,
import os
from PIL import Image
master_dir = 'images'
img_dirs = os.listdir( master_dir )
for img_dir in img_dirs:
img_names = os.listdir( os.path.join( master_dir , img_dir ) )
for name in img_names:
img_path = os.path.join( master_dir , img_dir , name )
image = Image.open( img_path ).resize( ( 64 , 64 ) ).convert( 'L' )
# Store this image in an array with its corresponding label
这里。 image
将是一个形状为(64, 64 )
的数组,表示图像是灰度图像。除了代码中的.convert( 'L' )
,我们还可以使用.convert( 'RGB' )
得到一个形状为(64,64,3)
的RGB图像。
现在,
在 Pythonlist
中收集所有图像和标签。
将列表转换为NumPy
数组。
使用np.save()
方法将NumPy
数组存储在.npy
文件中。
在训练模型的文件中,使用np.load()
方法加载这些文件并将它们提供给模型。
【讨论】:
完美,这正是我所需要的。谢谢。 另外,您可以在不同的脚本中添加这段代码,并分别运行这些脚本,这样每个脚本都会读取一些文件并产生处理后的数据 因此,当我尝试将其转换为 numpy 数组时,它似乎仍然认为我将其存储为“图像”而不是二维数组,并且不会让我将其转换为 numpy 数组.以上是关于你如何为 MNIST “导入”图像数据?的主要内容,如果未能解决你的问题,请参考以下文章