你如何为 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/catsimages/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图像。

现在,

在 Python list 中收集所有图像和标签。 将列表转换为NumPy 数组。 使用np.save() 方法将NumPy 数组存储在.npy 文件中。 在训练模型的文件中,使用np.load() 方法加载这些文件并将它们提供给模型。

【讨论】:

完美,这正是我所需要的。谢谢。 另外,您可以在不同的脚本中添加这段代码,并分别运行这些脚本,这样每个脚本都会读取一些文件并产生处理后的数据 因此,当我尝试将其转换为 numpy 数组时,它似乎仍然认为我将其存储为“图像”而不是二维数组,并且不会让我将其转换为 numpy 数组.

以上是关于你如何为 MNIST “导入”图像数据?的主要内容,如果未能解决你的问题,请参考以下文章

你如何为 iPhone 实现横向启动屏幕?

如何将MNIST数据集数据图像可视化

MNIST数据集的导入与预处理

如何为二维数据构建LSTM网络?

你如何为ggplot中的条形图在x轴上做范围?

你如何为 getInitialProps 编写 Jest 测试?