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