将keras中的输入层视为:
model.add(layers.Dense(32, input_shape=(784,)))
这就是输入的是2D张量,其中未指定axix = 0(批量维度),而轴= 1是784.轴= 0可以取任何值。
我的问题是: 这种风格不是很混乱吗?
理想情况下,如果不是
input_shape=(?,784)
这反映了axis = 0是通配符,而axis = 1应该是784
有什么特别原因吗?我在这里遗漏了什么吗?
答案 0 :(得分:0)
这种情况下的一致性是在图层的大小和输入的大小之间。通常,假设形状代表数据的性质;从这个意义上讲,批量维度不是数据本身的一部分,而是如何将其分组以进行培训或评估。因此,在您的代码片段中,很明显您拥有784个功能的输入和第一个产生32个功能的矢量图层。如果要明确包含批量维度,则可以使用batch_input_shape=(None, 784)
(这有时是必要的,例如,如果要提供固定大小的批次但具有未知大小的额外时间维度)。这在Sequential
model guide中进行了解释,但也与Input
图层的文档相匹配,您可以在其中提供shape
或batch_shape
参数(类似于input_shape
或batch_input_shape
)。