我目前正在通过两堂课学习深度学习。让我感到困惑的是,两节课在塑造输入矩阵 X 时存在符号差异。
在 Coursera 的讲座中,他们制作了一个形状为(特征数,样本数)的矩阵 X,以便他们垂直堆叠样本。否则,另一堂课将样本水平堆叠,以便每一行代表一个样本。
是什么造成了这种差异,我应该遵循哪一个?
我目前正在通过两堂课学习深度学习。让我感到困惑的是,两节课在塑造输入矩阵 X 时存在符号差异。
在 Coursera 的讲座中,他们制作了一个形状为(特征数,样本数)的矩阵 X,以便他们垂直堆叠样本。否则,另一堂课将样本水平堆叠,以便每一行代表一个样本。
是什么造成了这种差异,我应该遵循哪一个?
多件事情要在这里解压:
首先让我们首先假设我们的神经网络中只有一层,批次中只有一个样本,您可以垂直堆叠特征,因为这样很直观,
如上图所示,每个特征都将由一个输入节点表示,因此如果集合中有多个样本,则将它们排列为(特征数,样本数)的形状是有意义的,然后再继续到下一部分,请确保您正确理解了这一部分。
第 2 部分现在当我们想要移动到下一层时,我们想让它看起来像上一层的输出是这一层的输入,所以我们希望输入的形状为(隐藏层数,样本数),以便我们以一致的方式对每一层进行可视化,现在我们还必须前馈,为此,在我们的隐藏层权重矩阵中,我们有形状(前一层的特征数/神经元数,特征数/神经元数在当前层),现在为了保持一致性,我们必须在乘以 X 之前转置权重矩阵(W)。我希望这能解释为什么我们堆叠样本列。
现在我们转向为什么它们有时被表示为水平堆叠,答案是因为计算成本和损失更直观,你的输出层 y 堆叠为垂直列,你的预测 y_hat 作为垂直列,这使得陈述像 y - y_hat 这样的方式比水平堆叠而不是向量更直观。
那么应该从中学到什么,在训练输入输入时,我们将它们堆叠为(特征数量,样本数量)以保持整个网络的一致性和直观性,我们垂直堆叠样本以获得 Y 作为向量。在实践中,人们通常会避免垂直堆叠样本,他们只是获得 y 的转置,或者从水平堆叠中输出向量,但最好在一开始就进行可视化。
编辑 还表示输入数据,例如,当它以表格结构表示时,如 excel、csv、Dataframe 等。样本垂直堆叠。
如果您有任何困惑/疑问,请在下方评论。
图片来源:谷歌
两种方式都很好,重要的是要保持一致,即所有矩阵运算都是正确的。根据您可能拥有的矩阵的形状matrix*vector
或vector_transposed*matrix
,或沿着这些线的一些变化。
从长远来看,玩弄不同的表示实际上可能有助于理解。因此,我建议您同时听两堂课,并欣赏它们在表示数据等方面的差异。