def gen_donnees_valid(): """ Génère les données de validation utilisées pour réaliser l'expérience 1 constituées de paires d'images x,y telle que y est le résultat de la rotation de x par chaque angle de -50 à 50 degrés et ce 2 fois, 0 exclu (on a donc 2 x 100 paires d'images). """ angles = np.arange(-MAX_ROT, MAX_ROT + 1.) angles = np.delete(angles, MAX_ROT) # suppression de 0 # génération des paires d'images imgs_x1, imgs_y1, imgs_x2, imgs_y2 = [], [], [], [] for ang in angles: x1, y1 = uimg.get_paire_rot(TAILLE_IMG, ang) x2, y2 = uimg.get_paire_rot(TAILLE_IMG, ang) # mise sous forme vectorielle imgs_x1.append(x1.reshape(-1)) imgs_y1.append(y1.reshape(-1)) imgs_x2.append(x2.reshape(-1)) imgs_y2.append(y2.reshape(-1)) # regroupement des données dans un dictionnaire paires = {"x1" : np.array(imgs_x1), \ "y1" : np.array(imgs_y1), "x2" : np.array(imgs_x2), \ "y2" : np.array(imgs_y2)} # enregistrement dans un fichier npz np.savez(NOM_REP_EXP + "/" + NOM_FICH_VALID, **paires)
def gen_donnees_train(): """ Génère les données d'entraînement et les stocke dans un fichier. """ # génération uniformément aléatoire de NB_PAIRES_TRAIN angles # allant de -MAX_ROT à MAX_ROT degrés angles = np.floor(np.random.rand(NB_PAIRES_TRAIN) * MAX_ROT * 2 \ - MAX_ROT) # transx = np.round(np.random.rand(NB_PAIRES_TRAIN) * 7. - 3.5) # transy = np.round(np.random.rand(NB_PAIRES_TRAIN) * 7. - 3.5) # génération des paires d'images imgs_x, imgs_y = [], [] # for tx, ty in zip(transx, transy) # x, y = uimg.get_paire_trans(TAILLE_IMG, tx, ty) for ang in angles: x, y = uimg.get_paire_rot(TAILLE_IMG, ang) # mise sous forme vectorielle imgs_x.append(x.reshape(-1)) imgs_y.append(y.reshape(-1)) # regroupement des données dans un dictionnaire paires = {"x" : np.array(imgs_x), \ "y" : np.array(imgs_y)} # enregistrement dans un fichier npz np.savez(NOM_REP_EXP + "/" + NOM_FICH_TRAIN, **paires)
m = tf.get_collection("m")[0] print("Modèle prêt. ") sys.stdout.flush() map_layers = [] for ang in range(-50, 51): #~ if ang==0: #~ continue #~ #On ignore la rotation nulle #Génération de 100 paires pour cet angle cor_donnees_x = [] cor_donnees_y = [] for i in range(N_MOY): x, y = uimg.get_paire_rot(IMG_SIZE, ang) moy_x, std_x = x.mean(), x.std() x = (x - moy_x) / std_x y = (y - moy_x) / std_x cor_donnees_x.append(x.reshape(-1)) cor_donnees_y.append(y.reshape(-1)) # calcul des valeurs des matrices factorielles de chaque paire m_val = sess.run(m, \ feed_dict= { \ cor_x:np.array(cor_donnees_x).T, \ cor_y:np.array(cor_donnees_y).T}) #On moyenne sur chaque paire map_layers.append(m_val.mean(1)) # print(map_layers[0])