Skip to content
Snippets Groups Projects
Commit e7410cfa authored by Kevin Bonga's avatar Kevin Bonga
Browse files

adding tp3 and new file (enonce tp final)

parent f64fcc53
Branches
No related tags found
No related merge requests found
File added
File added
File added
File added
This diff is collapsed.
File added
import numpy as np
from sklearn.model_selection import train_test_split
from keras.models import Model
from keras.layers import Input, Dense
from keras.optimizers import Adam
# Charger et préparer les données
data = np.loadtxt('datas/semeion.data')
# Séparer les features et les labels
X = data[:, :-10] # Ignorer les 10 dernières colonnes
y = data[:, -10:]
# Diviser les données en ensembles d'entraînement et de test
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# Fonction pour ajouter du bruit aux données
def add_noise(data, noise_factor=0.5):
noisy_data = data + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=data.shape)
noisy_data = np.clip(noisy_data, 0., 1.)
return noisy_data
# Auto-encodeur avec une couche cachée
def build_single_layer_autoencoder(input_dim, hidden_dim):
input_layer = Input(shape=(input_dim,))
hidden_layer = Dense(hidden_dim, activation='relu')(input_layer)
output_layer = Dense(input_dim, activation='sigmoid')(hidden_layer)
autoencoder = Model(inputs=input_layer, outputs=output_layer)
autoencoder.compile(optimizer=Adam(), loss='mean_squared_error')
return autoencoder
# Auto-encodeur avec trois couches cachées
def build_three_layer_autoencoder(input_dim, hidden_dims):
input_layer = Input(shape=(input_dim,))
hidden_layer1 = Dense(hidden_dims[0], activation='relu')(input_layer)
hidden_layer2 = Dense(hidden_dims[1], activation='relu')(hidden_layer1)
hidden_layer3 = Dense(hidden_dims[2], activation='relu')(hidden_layer2)
output_layer = Dense(input_dim, activation='sigmoid')(hidden_layer3)
autoencoder = Model(inputs=input_layer, outputs=output_layer)
autoencoder.compile(optimizer=Adam(), loss='mean_squared_error')
return autoencoder
# Entraîner et évaluer un auto-encodeur
def train_and_evaluate_autoencoder(autoencoder, X_train, X_test, epochs=50, batch_size=256):
autoencoder.fit(X_train, X_train, epochs=epochs, batch_size=batch_size, shuffle=True, validation_data=(X_test, X_test))
reconstructed = autoencoder.predict(X_test)
mse = np.mean(np.power(X_test - reconstructed, 2), axis=1)
print("Mean Squared Error: ", np.mean(mse))
# Entraîner et évaluer un auto-encodeur avec des données bruitées
def train_and_evaluate_noisy_autoencoder(autoencoder, X_train, X_test, noise_factor=0.5, epochs=50, batch_size=256):
X_train_noisy = add_noise(X_train, noise_factor)
X_test_noisy = add_noise(X_test, noise_factor)
autoencoder.fit(X_train_noisy, X_train, epochs=epochs, batch_size=batch_size, shuffle=True, validation_data=(X_test_noisy, X_test))
reconstructed = autoencoder.predict(X_test)
mse = np.mean(np.power(X_test - reconstructed, 2), axis=1)
print("Mean Squared Error with noise: ", np.mean(mse))
# Paramètres
input_dim = X_train.shape[1]
# Entraîner et évaluer l'auto-encodeur avec une couche cachée
single_layer_autoencoder = build_single_layer_autoencoder(input_dim, hidden_dim=64)
train_and_evaluate_autoencoder(single_layer_autoencoder, X_train, X_test)
# Entraîner et évaluer l'auto-encodeur avec trois couches cachées
three_layer_autoencoder = build_three_layer_autoencoder(input_dim, hidden_dims=[128, 64, 32])
train_and_evaluate_autoencoder(three_layer_autoencoder, X_train, X_test)
# Entraîner et évaluer l'auto-encodeur avec des données bruitées
train_and_evaluate_noisy_autoencoder(three_layer_autoencoder, X_train, X_test, noise_factor=0.5)
\ No newline at end of file
absl-py==2.1.0
h5py==3.12.1
joblib==1.4.2
keras==3.6.0
markdown-it-py==3.0.0
mdurl==0.1.2
ml_dtypes==0.5.0
namex==0.0.8
numpy==2.0.2
optree==0.13.1
packaging==24.2
Pygments==2.18.0
rich==13.9.4
scipy==1.13.1
threadpoolctl==3.5.0
typing_extensions==4.12.2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment