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