diff --git a/iprbench/resources/tensorflow1/DS_Data.py b/iprbench/resources/tensorflow1/DS_Data.py deleted file mode 100644 index 17fd56b..0000000 --- a/iprbench/resources/tensorflow1/DS_Data.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Wed Sep 25 14:19:41 2024 - -@author: errobin -""" - -import numpy as np # pour faire du calcul matriciel -from PIL import Image # pour lire une image -# import matplotlib.pyplot as plt # pour faire des tracer - -# lecture image ###################################### - -image_file = Image.open("GAN.bmp") -image_bmp = 1. * np.array(image_file) # on transforme le fichier en matrice nommée image_bmp -image_file.close() # fermeture du fichier en lecture - -##################################################### -# code pour aider à comprendre une image -################################################################################ - -# recupère les dimension de l'image ############### -dim = image_bmp.shape - -nb_ligne = dim[0] -nb_colonne = dim[1] -image_traitee = np.zeros((nb_ligne, nb_colonne)) # déclaration d'un tableau au dimension de l'image -################################################### - -# Affecte les valeurs de la matrice image_bmp à image_traitee -for colonne in range(0, nb_colonne): - for ligne in range(0, nb_ligne): - - image_traitee[ligne, colonne] = image_bmp[ligne, colonne] # regarder les tableaux avec variable explorer - -# if False: -# plt.imshow(image_traitee,'gray') -# plt.show() - -################################################################################# -# fin code pour comprendre une image - -# DS partie Data -# complétez le code suivant pour créer votre database tq; x_train = position du pixel et y_target = couleur du pixel - -# declaration des tableaux -X_train = np.zeros((nb_colonne * nb_ligne, 2)) -Y_target = np.zeros((nb_colonne * nb_ligne)) - -compt = 0 -for colonne in range(0, nb_colonne): - for ligne in range(0, nb_ligne): - X_train[compt, 0] = colonne - X_train[compt, 1] = ligne - - Y_target[compt] = image_bmp[colonne, ligne] / 255. - compt = compt + 1 - -# sauvagarde de la database -np.savetxt("X_train.txt", X_train, delimiter=';') -np.savetxt("Y_target.txt", Y_target, delimiter=';') diff --git a/iprbench/resources/tensorflow1/DS_Train.py b/iprbench/resources/tensorflow1/DS_Train.py deleted file mode 100644 index 0cada23..0000000 --- a/iprbench/resources/tensorflow1/DS_Train.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Wed Sep 25 14:38:32 2024 - -@author: errobin -""" - -# DS partie Train -# complétez/joué sur les hyperparamètres (vitesse d'apprentissage et nb epoch) et sur l'architecture du modèle pour l'entrainer et pour le sauver (une fois entrainé) -# ASTUCE un loss inférieur à 0.005 permets déjà d'obtenir des résultats intéréssants - - -import time -import tensorflow as tf -import numpy as np - - -X_train = np.genfromtxt('X_train.txt', delimiter=';') -Y_target = np.genfromtxt('Y_target.txt', delimiter=';') - -# Partie ANN definition + entrainement -# ***************************************** -model = tf.keras.models.Sequential() - -model.add(tf.keras.layers.Dense(2048, activation="relu")) -model.add(tf.keras.layers.Dense(1024, activation="relu")) -model.add(tf.keras.layers.Dense(512, activation="relu")) -model.add(tf.keras.layers.Dense(256, activation="relu")) -model.add(tf.keras.layers.Dense(128, activation="relu")) -model.add(tf.keras.layers.Dense(64, activation="relu")) -model.add(tf.keras.layers.Dense(32, activation="relu")) -model.add(tf.keras.layers.Dense(1)) - -model.compile( - loss="mse", - optimizer="adam" -) - - -def scheduler(epoch): # dans cette fonction il est possible de faire des test if en fonction de epoch pour retourner différente valeur de la ??? - return 0.0001 - - -callback_vitesse_apprentissage = tf.keras.callbacks.LearningRateScheduler(scheduler) -################################################################### - -start_time = time.time() -model.fit(X_train, Y_target, epochs=3, verbose=1, callbacks=[callback_vitesse_apprentissage]) -end_time = time.time() -temps_cal = end_time - start_time -print(temps_cal) diff --git a/iprbench/resources/tensorflow1/train.py b/iprbench/resources/tensorflow1/train.py new file mode 100644 index 0000000..bc6c59c --- /dev/null +++ b/iprbench/resources/tensorflow1/train.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Sep 25 14:38:32 2024 + +@author: errobin +""" + +# DS partie Train +# complétez/joué sur les hyperparamètres (vitesse d'apprentissage et nb epoch) et sur l'architecture du modèle pour l'entrainer et pour le sauver (une fois entrainé) +# ASTUCE un loss inférieur à 0.005 permets déjà d'obtenir des résultats intéréssants + +from pathlib import Path +import time +import tensorflow as tf +import numpy as np + + +def scheduler(epoch): # dans cette fonction il est possible de faire des test if en fonction de epoch pour retourner différente valeur de la ??? + return 0.0001 + + +def learn(X_train: np.array, Y_target: np.array, learning_rate_scheduler): + + assert X_train.shape[0] == Y_target.shape[0] + # Partie ANN definition + entrainement + # ***************************************** + model = tf.keras.models.Sequential() + + model.add(tf.keras.layers.Dense(2048, activation="relu")) + model.add(tf.keras.layers.Dense(1024, activation="relu")) + model.add(tf.keras.layers.Dense(512, activation="relu")) + model.add(tf.keras.layers.Dense(256, activation="relu")) + model.add(tf.keras.layers.Dense(128, activation="relu")) + model.add(tf.keras.layers.Dense(64, activation="relu")) + model.add(tf.keras.layers.Dense(32, activation="relu")) + model.add(tf.keras.layers.Dense(1)) + + model.compile( + loss="mse", + optimizer="adam" + ) + + callback_vitesse_apprentissage = tf.keras.callbacks.LearningRateScheduler(learning_rate_scheduler) + + start_time = time.time() + model.fit(X_train, Y_target, epochs=3, verbose=1, callbacks=[callback_vitesse_apprentissage]) + end_time = time.time() + temps_cal = end_time - start_time + print(temps_cal) + + +def main(): + X_train = np.genfromtxt(Path('X_train.txt'), delimiter=';') + Y_target = np.genfromtxt(Path('Y_target.txt'), delimiter=';') + learn(X_train, Y_target, learning_rate_scheduler=scheduler) + + +main() \ No newline at end of file diff --git a/iprbench/resources/tensorflow1/trainset.py b/iprbench/resources/tensorflow1/trainset.py new file mode 100644 index 0000000..98d8fd8 --- /dev/null +++ b/iprbench/resources/tensorflow1/trainset.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Sep 25 14:19:41 2024 + +@author: errobin +""" +from typing import Tuple +from pathlib import Path +import numpy as np # pour faire du calcul matriciel +from PIL import Image # pour lire une image +# import matplotlib.pyplot as plt # pour faire des tracer + + +def create_training_set(image_file_path: Path) -> Tuple[np.array, np.array]: + image_file = Image.open(image_file_path) + image_bmp = 1. * np.array(image_file) # on transforme le fichier en matrice nommée image_bmp + image_file.close() # fermeture du fichier en lecture + + # lecture image ###################################### + + ##################################################### + # code pour aider à comprendre une image + ################################################################################ + + # recupère les dimension de l'image ############### + dim = image_bmp.shape + + nb_ligne = dim[0] + nb_colonne = dim[1] + image_traitee = np.zeros((nb_ligne, nb_colonne)) # déclaration d'un tableau au dimension de l'image + ################################################### + + # Affecte les valeurs de la matrice image_bmp à image_traitee + for colonne in range(0, nb_colonne): + for ligne in range(0, nb_ligne): + + image_traitee[ligne, colonne] = image_bmp[ligne, colonne] # regarder les tableaux avec variable explorer + + # if False: + # plt.imshow(image_traitee,'gray') + # plt.show() + + ################################################################################# + # fin code pour comprendre une image + + # DS partie Data + # complétez le code suivant pour créer votre database tq; x_train = position du pixel et y_target = couleur du pixel + + # declaration des tableaux + X_train = np.zeros((nb_colonne * nb_ligne, 2)) + Y_target = np.zeros((nb_colonne * nb_ligne)) + + compt = 0 + for colonne in range(0, nb_colonne): + for ligne in range(0, nb_ligne): + X_train[compt, 0] = colonne + X_train[compt, 1] = ligne + + Y_target[compt] = image_bmp[colonne, ligne] / 255. + compt = compt + 1 + + return X_train, Y_target + + +def main(): + X_train, Y_target = create_training_set(Path('./GAN.bmp')) + # sauvagarde de la database + np.savetxt(Path('X_train.txt'), X_train, delimiter=';') + np.savetxt(Path('Y_target.txt'), Y_target, delimiter=';') + + +main()