我正在使用TensorFlow和Keras进行模式识别。
我的输入数据是32 * 32像素的二进制图像,输出是4类。
我创建了如下模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32,1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(4))
但是当我尝试显示模型摘要时,我会得到
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 30, 30, 32) 320
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense (Dense) (None, 32) 32800
_________________________________________________________________
dense_1 (Dense) (None, 4) 132
=================================================================
我的问题是“?”是什么意思? &图层尺寸为“无”
答案 0 :(得分:2)
在您的情况下,只有在调用fit
时才能知道批次大小,因此,在定义模型时,TF仍然不知道批次大小。
?
和None
是批次大小的占位符。
答案 1 :(得分:2)
在Keras中,None
维度表示它可以是任何标量数,因此您可以使用此模型来推断任意长的输入。此尺寸不会影响网络的大小,仅表示您可以在测试期间自由选择输入的长度(样本数量)。
卷积层中的元素按batchSize, height, width, channels
?
和None
是批量大小的占位符。