我从Kaggle复制了代码,但无法计算其中的层数。我正在开发一个图像分类模型。能有人解释一下吗?我尝试了大多数解决方案,但还是无法计算出卷积层和全连接层的数量。
model = Sequential()inputShape = (height, width, depth)chanDim = -1if K.image_data_format() == "channels_first": inputShape = (depth, height, width) chanDim = 1 model.add(Conv2D(32, (3, 3), padding="same",input_shape=inputShape))model.add(Activation("relu"))model.add(BatchNormalization(axis=chanDim))model.add(MaxPooling2D(pool_size=(3, 3)))model.add(Dropout(0.25))model.add(Conv2D(64, (3, 3), padding="same"))model.add(Activation("relu"))model.add(BatchNormalization(axis=chanDim))model.add(Conv2D(64, (3, 3), padding="same"))model.add(Activation("relu"))model.add(BatchNormalization(axis=chanDim))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Conv2D(128, (3, 3), padding="same"))model.add(Activation("relu"))model.add(BatchNormalization(axis=chanDim))model.add(Conv2D(128, (3, 3), padding="same"))model.add(Activation("relu"))model.add(BatchNormalization(axis=chanDim))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(1024))model.add(Activation("relu"))model.add(BatchNormalization())model.add(Dropout(0.5))model.add(Dense(15))model.add(Activation("softmax"))model.summary()
能有人解释一下吗?
Model: "sequential_2"_________________________________________________________________Layer (type) Output Shape Param # =================================================================conv2d_5 (Conv2D) (None, 256, 256, 32) 896 _________________________________________________________________activation_6 (Activation) (None, 256, 256, 32) 0 _________________________________________________________________batch_normalization_6 (Batch (None, 256, 256, 32) 128 _________________________________________________________________max_pooling2d_3 (MaxPooling2 (None, 85, 85, 32) 0 _________________________________________________________________dropout_4 (Dropout) (None, 85, 85, 32) 0 _________________________________________________________________conv2d_6 (Conv2D) (None, 85, 85, 64) 18496 _________________________________________________________________activation_7 (Activation) (None, 85, 85, 64) 0 _________________________________________________________________batch_normalization_7 (Batch (None, 85, 85, 64) 256 _________________________________________________________________conv2d_7 (Conv2D) (None, 85, 85, 64) 36928 _________________________________________________________________activation_8 (Activation) (None, 85, 85, 64) 0 _________________________________________________________________batch_normalization_8 (Batch (None, 85, 85, 64) 256 _________________________________________________________________max_pooling2d_4 (MaxPooling2 (None, 42, 42, 64) 0 _________________________________________________________________dropout_5 (Dropout) (None, 42, 42, 64) 0 _________________________________________________________________conv2d_8 (Conv2D) (None, 42, 42, 128) 73856 _________________________________________________________________activation_9 (Activation) (None, 42, 42, 128) 0 _________________________________________________________________batch_normalization_9 (Batch (None, 42, 42, 128) 512 _________________________________________________________________conv2d_9 (Conv2D) (None, 42, 42, 128) 147584 _________________________________________________________________activation_10 (Activation) (None, 42, 42, 128) 0 _________________________________________________________________batch_normalization_10 (Batc (None, 42, 42, 128) 512 _________________________________________________________________max_pooling2d_5 (MaxPooling2 (None, 21, 21, 128) 0 _________________________________________________________________dropout_6 (Dropout) (None, 21, 21, 128) 0 _________________________________________________________________flatten_1 (Flatten) (None, 56448) 0 _________________________________________________________________dense_1 (Dense) (None, 1024) 57803776 _________________________________________________________________activation_11 (Activation) (None, 1024) 0 _________________________________________________________________batch_normalization_11 (Batc (None, 1024) 4096 _________________________________________________________________dropout_7 (Dropout) (None, 1024) 0 _________________________________________________________________dense_2 (Dense) (None, 15) 15375 _________________________________________________________________activation_12 (Activation) (None, 15) 0 =================================================================Total params: 58,102,671Trainable params: 58,099,791Non-trainable params: 2,880_________________________________________________________________
我无法计算卷积层和全连接层的数量。我也尝试了model.layers
,输出是28。这是怎么回事?
我如何编程获取卷积层和全连接层的数量?
回答:
首先,层数为28的原因是Flatten
、BatchNormalization
、Dropout
、Activation
和MaxPool2D
都在model.layers
中被计算在内了。
尽管如此,你可以使用isinstance
来获取层的计数:
num_conv = 0num_dense = 0for layer in model.layers: if isinstance(layer, Conv2D): num_conv += 1 elif isinstance(layer, Dense): num_dense += 1