这是我第一次使用keras.sequential创建卷积模型。下面是代码,我不明白摘要部分的含义。
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from keras.models import Sequential
from keras import optimizers
model = Sequential()
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu',
input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer=optimizers.RMSprop(),
metrics=['accuracy'])
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 148, 148, 16) 448
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 74, 74, 16) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 72, 72, 64) 9280
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 36, 36, 64) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 34, 34, 128) 73856
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 17, 17, 128) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 36992) 0
_________________________________________________________________
dense_1 (Dense) (None, 512) 18940416
_________________________________________________________________
dense_2 (Dense) (None, 1) 513
=================================================================
Total params: 19,024,513
Trainable params: 19,024,513
Non-trainable params: 0
答案 0 :(得分:1)
model.summary()为您提供有关模型的每一层的输出形状和参数数量的信息。例如,第一层“ conv2d_1”对应于您的python代码中的第一层
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu',
input_shape=input_shape))
它告诉您该层的输出具有形状(无,148、148、16)。 “无”是指样品/批次的尺寸,通常在Keras模型中未指定。它是根据实际输入数据自动推断的。其余形状表示您拥有148x148x16数据,您可以将其视为148x148的16张图像的堆栈。 “ 16”来自
中的第一个参数Conv2D(16,...
参数是图层中权重的数量,我相信它们都是可以训练的。这告诉您有关模型的复杂性以及以相对方式训练所需的时间-更多参数,更多处理等...
其余各行都有类似的分析。我希望这会有所帮助。