我在处理MNIST数据集时获得了很多乐趣和学习,但我想扩展到使用自己的训练数据,我使用的是theano和keras。然而,我在构思如何创建训练数据方面遇到了极大的困难。
我查看了MNIST的结构,发现作为数据,它的第一部分是图像的分类,剩下的部分是各个像素的亮度,从0到100。
我的第一个想法是使用像这个或这个的光谱图,但我还不明白如何组织数据,以便CNN可以读取它。有什么想法或建议吗?
回答:
我可能无法准确回答这个问题。
我将尝试解释MNIST数据集的格式,并以以下示例为例说明。
假设您希望对训练数据中的四种不同类别标签进行分类 -> 汽车、自行车、公交车和飞机。所有图像都是彩色图像,每个RGB的像素值为255。我在这个例子中排除了亮度/不透明度值作为属性。所有图像都已标准化,尺寸为28×28(仅为任意尺寸)。这给我们提供了784个像素,由于每个像素有3个RGB值,这给我们带来了784×3 = 2352个属性值。
每个实例(在MNIST数据集中)的输出以一个热向量表示。对于汽车、自行车、公交车和飞机的1热向量表示分别为1000、0100、0010和0001。
假设MNIST数据集有1000个用于训练的实例,那么它将采用以下结构。它将包含1000个元组,每个元组是输入向量(长度为2352个属性)和输出向量(长度为4个属性的1热表示)的组合。
为了更清楚地说明这一点。
([12, 51, 16, 17, ……., 12], [0, 0, 1, 0])
([55, 125, 71, 244, ….., 10], [1, 0, 0, 0])
……
其中元组中的第一个列表长度为2352,第二个列表长度为4。总共有1000个元组,每个元组代表一个训练实例。
如果您愿意,可以查看这个代码,其中我创建了一个类似于MNIST格式的数据集。