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)
Example #3
0
        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])