import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense, Dropout, BatchNormalization
-------------------------
Construction du modèle CNN
-------------------------
def build_cnn_model(input_shape, num_classes, filter1, filter2, filter3, learning_rate, dropout): model = Sequential()
# 1er bloc convolution
model.add(Conv1D(filters=filter1, kernel_size=3, activation='relu', padding='same', input_shape=input_shape))
model.add(BatchNormalization())
model.add(MaxPooling1D(pool_size=2))
# 2e bloc
model.add(Conv1D(filters=filter2, kernel_size=3, activation='relu', padding='same'))
model.add(BatchNormalization())
model.add(MaxPooling1D(pool_size=2))
# 3e bloc
model.add(Conv1D(filters=filter3, kernel_size=3, activation='relu', padding='same'))
model.add(BatchNormalization())
model.add(MaxPooling1D(pool_size=2))
# Fully connected
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(dropout))
model.add(Dense(num_classes, activation='softmax'))
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),
loss='categorical_crossentropy',
metrics=['accuracy']
)
return model