python - 矩阵形状讲座之间的差异
问题描述
我目前正在通过两堂课学习深度学习。让我感到困惑的是,两节课在塑造输入矩阵 X 时存在符号差异。
在 Coursera 的讲座中,他们制作了一个形状为(特征数,样本数)的矩阵 X,以便他们垂直堆叠样本。否则,另一堂课将样本水平堆叠,以便每一行代表一个样本。
是什么造成了这种差异,我应该遵循哪一个?
解决方案
多件事情要在这里解压:
首先让我们首先假设我们的神经网络中只有一层,批次中只有一个样本,您可以垂直堆叠特征,因为这样很直观,
如上图所示,每个特征都将由一个输入节点表示,因此如果集合中有多个样本,则将它们排列为(特征数,样本数)的形状是有意义的,然后再继续到下一部分,请确保您正确理解了这一部分。
第 2 部分现在当我们想要移动到下一层时,我们想让它看起来像上一层的输出是这一层的输入,所以我们希望输入的形状为(隐藏层数,样本数),以便我们以一致的方式对每一层进行可视化,现在我们还必须前馈,为此,在我们的隐藏层权重矩阵中,我们有形状(前一层的特征数/神经元数,特征数/神经元数在当前层),现在为了保持一致性,我们必须在乘以 X 之前转置权重矩阵(W)。我希望这能解释为什么我们堆叠样本列。
现在我们转向为什么它们有时被表示为水平堆叠,答案是因为计算成本和损失更直观,你的输出层 y 堆叠为垂直列,你的预测 y_hat 作为垂直列,这使得陈述像 y - y_hat 这样的方式比水平堆叠而不是向量更直观。
那么应该从中学到什么,在训练输入输入时,我们将它们堆叠为(特征数量,样本数量)以保持整个网络的一致性和直观性,我们垂直堆叠样本以获得 Y 作为向量。在实践中,人们通常会避免垂直堆叠样本,他们只是获得 y 的转置,或者从水平堆叠中输出向量,但最好在一开始就进行可视化。
编辑 还表示输入数据,例如,当它以表格结构表示时,如 excel、csv、Dataframe 等。样本垂直堆叠。
如果您有任何困惑/疑问,请在下方评论。
图片来源:谷歌
推荐阅读
- jenkins - Jenkins+RTC:是否有任何 jenkins 插件具有在不加载 RTC 服务器的情况下检查更改的功能
- python - 根据另一个文件中的字符串重命名文件夹中的文件-使用Python
- javascript - 有没有办法检查一个 npm 包是否需要发布,然后才发布?
- ngxs - Ngxs - 如何在应用程序加载时预填充状态
- java - 如何使扫描仪返回分隔符作为标记
- android - 如何在尝试使用 GeckoView 时修复此错误“错误:找不到方法 compileOptions()”?
- python - 无法访问属于同一类的其他函数的函数中的变量
- java - 如何调用 H2 LINK_SCHEMA?
- reactjs - 我们如何在 Reactjs 中的 antd 表的开头添加动态行,而其他行保持从 API 获取的静态数据?
- python - Python Pandas:将列表添加到不同 len 的 df