首页 >后端开发 >Python教程 >扁平化或重塑是否先于具有多维输入的 Keras 密集层?

扁平化或重塑是否先于具有多维输入的 Keras 密集层?

Susan Sarandon
Susan Sarandon原创
2024-10-21 07:57:02744浏览

Does Flatten or Reshape Precede a Keras Dense Layer with Multi-Dimensional Input?

输入形状错误:Keras 密集层中的扁平化与重塑

在典型的 Keras 网络中,密集层期望扁平化的输入数据单一维度。然而,当使用密集层和更高维度的输入数据时,会出现一个常见错误。这可能会导致以下输出:

<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>

理解差异

与文档相反,该文档指出在应用密集之前高维输入会被展平层,Keras 最近的更新改变了这种行为。该层现在独立应用于输入张量的最后一个轴。

在上面的示例中,输入形状为 (2, 3)。具有 4 个单元的 Dense 层分别应用于每一行,得到 (2, 4) 的输出形状。

含义和注意事项

此更改具有一定的影响含义:

  • 共享权重:密集层中的每个单元都连接到具有相同权重的输入。这意味着应用于多维输入的 Dense 层有效地实现了跨行共享权重。
  • 与 TimeDistributed 等效: 对于时间序列数据,使用 TimeDistributed(Dense(...) ) 现在相当于单步预测任务的 Dense(...)。

视觉插图

为了更好地理解,请考虑以下内容插图:

[图表图像,显示如何将密集层应用于多维输入,并跨行共享权重]

结论

为了避免上述错误,请确保在应用之前对 Dense 层的输入进行扁平化。或者,在处理多维输入时接受密集层的新行为,考虑其对某些网络架构的影响和潜在优势。

以上是扁平化或重塑是否先于具有多维输入的 Keras 密集层?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn