Keras:指定输入张量的维度的顺序

时间:2018-03-12 12:06:09

标签: keras keras-layer

将keras中的输入层视为:

 model.add(layers.Dense(32, input_shape=(784,)))

这就是输入的是2D张量,其中未指定axix = 0(批量维度),而轴= 1是784.轴= 0可以取任何值。

我的问题是: 这种风格不是很混乱吗?

理想情况下,如果不是

 input_shape=(?,784)

这反映了axis = 0是通配符,而axis = 1应该是784

有什么特别原因吗?我在这里遗漏了什么吗?

1 个答案:

答案 0 :(得分:0)

这种情况下的一致性是在图层的大小和输入的大小之间。通常,假设形状代表数据的性质;从这个意义上讲,批量维度不是数据本身的一部分,而是如何将其分组以进行培训或评估。因此,在您的代码片段中,很明显您拥有784个功能的输入和第一个产生32个功能的矢量图层。如果要明确包含批量维度,则可以使用batch_input_shape=(None, 784)(这有时是必要的,例如,如果要提供固定大小的批次但具有未知大小的额外时间维度)。这在Sequential model guide中进行了解释,但也与Input图层的文档相匹配,您可以在其中提供shapebatch_shape参数(类似于input_shapebatch_input_shape)。