我正在按照相同 链接上的 keras 教程在 keras 中实现 1D CNN 。建立模型后,当我执行 model.summary() 时,我得到以下输出。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 1000) 0
_________________________________________________________________
embedding_1 (Embedding) (None, 1000, 100) 17410600
_________________________________________________________________
conv1d_1 (Conv1D) (None, 996, 128) 64128
_________________________________________________________________
max_pooling1d_1 (MaxPooling1 (None, 199, 128) 0
_________________________________________________________________
conv1d_2 (Conv1D) (None, 195, 128) 82048
_________________________________________________________________
max_pooling1d_2 (MaxPooling1 (None, 39, 128) 0
_________________________________________________________________
conv1d_3 (Conv1D) (None, 35, 128) 82048
_________________________________________________________________
max_pooling1d_3 (MaxPooling1 (None, 1, 128) 0
_________________________________________________________________
global_max_pooling1d_1 (Glob (None, 128) 0
_________________________________________________________________
dense_1 (Dense) (None, 128) 16512
_________________________________________________________________
dense_2 (Dense) (None, 20) 2580
=================================================================
Total params: 17,657,916
Trainable params: 247,316
Non-trainable params: 17,410,600
_________________________________________________________________
None
conv1d_1 的参数总数为 64128。但是由于 conv1d_1 是使用 filters = 128, kernel_size = 5, padding = 'valid' (这意味着没有填充)初始化的,所以参数的数量不应该是
=> kernel_size * kernel_size * num_filters + num_filters * 偏差
=> 5 * 5 * 128 + 128 * 1
=> 26 * 128
=> 3328