Я работаю над простой 1D
моделью свертки, которая построена следующим образом
model1= Sequential()
model1.add(Conv1D(60,32, strides=1, activation='relu',padding='causal',input_shape=(64,1)))
model1.add(Conv1D(80,10, strides=1, activation='relu',padding='causal'))
model1.add(Conv1D(100,5, strides=1, activation='relu',padding='causal'))
model1.add(MaxPooling1D(2))
model1.add(Dense(300,activation='relu'))
model1.add(Flatten())
model1.add(Dense(1,activation='relu'))
print(model1.summary())
Краткое описание модели выглядит следующим образом
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d_1 (Conv1D) (None, 64, 60) 1980
_________________________________________________________________
conv1d_2 (Conv1D) (None, 64, 80) 48080
_________________________________________________________________
conv1d_3 (Conv1D) (None, 64, 100) 40100
_________________________________________________________________
max_pooling1d_1 (MaxPooling1 (None, 32, 100) 0
_________________________________________________________________
dense_1 (Dense) (None, 32, 300) 30300
_________________________________________________________________
flatten_1 (Flatten) (None, 9600) 0
_________________________________________________________________
dense_2 (Dense) (None, 1) 9601
=================================================================
Total params: 130,061
Trainable params: 130,061
Non-trainable params: 0
_________________________________________________________________
Если я изменю перемещение плоского слоя перед первым плотным слоем, как показано ниже, я получу следующую архитектуру модели. Кажется, что количество параметров модели этого гораздо больше, чем предыдущий. Почему размещение выравнивающего слоя оказывает такое большее влияние? Как правильно расположить выравнивающий слой.
model1= Sequential()
model1.add(Conv1D(60,32, strides=1, activation='relu',padding='causal',input_shape=(64,1)))
model1.add(Conv1D(80,10, strides=1, activation='relu',padding='causal'))
model1.add(Conv1D(100,5, strides=1, activation='relu',padding='causal'))
model1.add(MaxPooling1D(2))
model1.add(Flatten())
model1.add(Dense(300,activation='relu'))
model1.add(Dense(1,activation='relu'))