Aer*_*rin 7 mnist deep-learning tensorflow
我正在关注udacity MNIST 教程,而 MNIST 数据最初是28*28
矩阵。然而,在提供该数据之前,他们将数据展平为具有 784 列的一维数组(784 = 28 * 28)
。
例如,原始训练集形状为 (200000, 28, 28)。
200000 行(数据)。每个数据为28*28矩阵
他们将其转换为形状为 (200000, 784) 的训练集
有人可以解释为什么他们在提供给 tensorflow 之前将数据展平吗?
因为当你添加一个全连接层时,你总是希望你的数据是一个(1 或)2 维矩阵,其中每一行都是代表你的数据的向量。这样,全连接层只是您的输入(大小(batch_size, n_features)
)和权重(形状(n_features, n_outputs)
)(加上偏置和激活函数)之间的矩阵乘法,您会得到形状的输出(batch_size, n_outputs)
。另外,你真的不需要全连接层中的原始形状信息,所以丢失它也可以。
如果不先整形就得到相同的结果会更复杂,效率也会更低,这就是为什么我们总是在全连接层之前这样做。相反,对于卷积层,您需要将数据保留为原始格式(宽度、高度)。