输出形状中的(None, 100)是什么意思?这个(“None”)是样本数量还是隐藏维度?
回答:
None
表示这个维度是可变的。
在Keras模型中,第一个维度总是批量大小。除非在非常特殊的情况下(例如,使用stateful=True
的LSTM层时),你不需要固定的批量大小。
这就是为什么在定义模型时通常会忽略这个维度。例如,当你定义input_shape=(100,200)
时,实际上你忽略了批量大小,并且定义了“每个样本”的形状。内部形状将是(None, 100, 200)
,允许可变的批量大小,每个批次中的样本具有形状(100,200)
。
批量大小将在fit
或predict
方法中自动定义。
其他None
维度:
不仅批量维度可以是None
,还有许多其他维度也可以是None
。
例如,在2D卷积网络中,预期输入是(batchSize, height, width, channels)
,你可以有像(None, None, None, 3)
这样的形状,允许可变的图像大小。
在循环网络和1D卷积中,你也可以使length/timesteps
维度可变,具有像(None, None, featuresOrChannels)
这样的形状。