输入形状错误:Keras 密集层中的扁平化与重塑
在典型的 Keras 网络中,密集层期望扁平化的输入数据单一维度。然而,当使用密集层和更高维度的输入数据时,会出现一个常见错误。这可能会导致以下输出:
<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>
理解差异
与文档相反,该文档指出在应用密集之前高维输入会被展平层,Keras 最近的更新改变了这种行为。该层现在独立应用于输入张量的最后一个轴。
在上面的示例中,输入形状为 (2, 3)。具有 4 个单元的 Dense 层分别应用于每一行,得到 (2, 4) 的输出形状。
含义和注意事项
此更改具有一定的影响含义:
视觉插图
为了更好地理解,请考虑以下内容插图:
[图表图像,显示如何将密集层应用于多维输入,并跨行共享权重]
结论
为了避免上述错误,请确保在应用之前对 Dense 层的输入进行扁平化。或者,在处理多维输入时接受密集层的新行为,考虑其对某些网络架构的影响和潜在优势。
以上是扁平化或重塑是否先于具有多维输入的 Keras 密集层?的详细内容。更多信息请关注PHP中文网其他相关文章!