我已经学习了神经网络的快速课程,以更好地理解它们,现在我正在R中亲自尝试它们。我正在关注Keras的this文档。

我了解发生了什么的方式:

我们正在输入一系列图像,然后根据像素的排列方式和这些像素中的颜色将这些图像转换为数值矩阵。然后,根据分类(0到9),我们建立一个神经网络模型来学习这些排列的模式。然后,我们使用该模型来预测图像属于哪个类别。老实说,我不能完全确定y_train和x_train是什么。我只是将其视为一种训练和一种验证集,因此我不确定x和y之间的区别是什么。

我的问题:

我遵循了T的步骤,模型运行良好,并且预测看起来像文档中所做的那样。最终,预测如下所示:python - 在文档示例(MNIST)中了解神经网络的确切预测-LMLPHP

我的意思是说x_test中的观察值1被预测为类别7。

但是,看着x_test看起来像这样:python - 在文档示例(MNIST)中了解神经网络的确切预测-LMLPHP

如果我进一步向下滚动,则每一列和每一行都有一个0。这就是我感到困惑的地方。我也不确定如何查看原始图像以自己查看它们预测的效果如何。我最终想自己画一个数字,然后看模型是否可以预测它,但是为此,我需要首先了解发生了什么。我觉得我已经接近了,但我只需要稍微推动一下!

最佳答案

我认为,如果您阅读有关输入和输出层尺寸的更多信息,将会有所帮助。

在您的示例中:
输入层:
图像的单个训练示例具有两个维度28 * 28,然后将其转换为维度784的单个向量。这充当神经网络的输入层。
因此,对于m培训示例,您的输入层将具有(m, 784)尺寸。以类推(对于传统的ML系统),您可以想象图像的每个像素都转换为特征(或x1,x2,... x784),并且您的训练集是具有m行和列,然后将其输入神经网络以计算784

输出层:
作为神经网络的输出,我们希望它预测y_hat = f(x1,x2,x3,...x784)中的数字。因此,对于单个训练示例,输出层的维度为10,表示从0到9的每个数字,对于0 to 9测试示例,输出层将为维度为n的矩阵。
我们的n*10是长度为y的向量,类似于n,每个测试示例都包含真实值。但是为了匹配输出层的尺寸,[1,7,8,2,.....]矢量的尺寸使用一键编码进行转换。想象一个长度为10的向量,它通过在第7位放置1来表示数字7,其余位置为零,例如y

因此,在您的问题中,如果您希望查看原始图像,则可以在使用[0,0,0,0,0,0,1,0,0,0]这样的示例重塑训练示例之前,先看到它。

希望这可以帮助!!

08-24 21:06