예제 #1
0
def RDAE_DAE_l21RDAE_compressUser(X, layers, lamda, folder, learning_rate = 0.15, inner = 100, outer = 10, batch_size = 133,inputsize = (28,28)):
    if not os.path.isdir(folder):
        os.makedirs(folder)
    os.chdir(folder)

    with tf.Graph().as_default():
        with tf.Session() as sess:
            rael21 = l21RDAE.RobustL21Autoencoder(sess = sess, lambda_= lamda*X.shape[0], layers_sizes=layers)
            l21L, l21S = rael21.fit(X = X, sess = sess, inner_iteration = inner, iteration = outer, batch_size = batch_size, learning_rate = learning_rate,  verbose = True)

            l21R = rael21.getRecon(X = X, sess = sess)
            l21H = rael21.transform(X, sess)
            Image.fromarray(I.tile_raster_images(X=l21S.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21S.png")
            Image.fromarray(I.tile_raster_images(X=l21R.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21R.png")
            Image.fromarray(I.tile_raster_images(X=l21L.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21L.png")
            l21H.dump(r"l21H.pkl")
            np.array(rael21.errors).dump(r"l21error.pkl")
            l21S.dump("l21S.pkl")
    with tf.Graph().as_default():
        with tf.Session() as sess:
            rae = RDAE.RDAE(sess = sess, lambda_ = lamda * 10, layers_sizes = layers)
            rL, rS = rae.fit(X = X ,sess = sess, learning_rate = learning_rate, batch_size = batch_size, inner_iteration = inner, iteration = outer, verbose=True)

            rR = rae.getRecon(X, sess)
            rH = rae.transform(X, sess)
            Image.fromarray(I.tile_raster_images(X=rR.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"rR.png")
            Image.fromarray(I.tile_raster_images(X=rS.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"rS.png")
            Image.fromarray(I.tile_raster_images(X=rL.T,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"rL.png")
            rH.dump(r"rH.pkl")
            np.array(rae.errors).dump(r"RDAEerror.pkl")
            rS.dump("rS.pkl")
    os.chdir("../")
def tune_l21RDAE(x,
                 lam_list=[50],
                 learn_rates=[0.1],
                 inner=150,
                 outter=10,
                 batch_size=133):
    with tf.Session() as sess:
        rae = l21RDAE.RobustL21Autoencoder(sess=sess,
                                           lambda_=lam_list[0],
                                           layers_sizes=[784, 400, 255, 100])

        L, S = rae.fit(x,
                       sess=sess,
                       inner_iteration=inner,
                       iteration=outter,
                       batch_size=batch_size,
                       verbose=True)

        ae = Deep_Autoencoder(sess=sess, input_dim_list=[784, 400, 225, 100])

        error = ae.fit(x,
                       sess=sess,
                       learning_rate=learn_rates[0],
                       iteration=inner * outer,
                       batch_size=batch_size,
                       verbose=True)
    return rae.errors, error
def compare_RDAE_DAE_l21RDAE(X,
                             layers,
                             lamda,
                             folder,
                             learning_rate=0.15,
                             inner=100,
                             outer=10,
                             batch_size=133,
                             inputsize=(28, 28)):
    if not os.path.isdir(folder):
        os.makedirs(folder)
    os.chdir(folder)

    with tf.Session() as sess:
        ae = DAE.Deep_Autoencoder(sess=sess, input_dim_list=layers)
        error = ae.fit(X=X,
                       sess=sess,
                       learning_rate=learning_rate,
                       iteration=inner * outer,
                       batch_size=batch_size,
                       verbose=True)
        dR = ae.getRecon(X=X, sess=sess)
        dH = ae.transform(X, sess)
        Image.fromarray(
            I.tile_raster_images(X=dR,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"dR.png")
        dH.dump("dH.pkl")
        np.array(error).dump(r"DAEerror.pkl")

        rael21 = l21RDAE.RobustL21Autoencoder(sess=sess,
                                              lambda_=lamda,
                                              layers_sizes=layers)
        l21L, l21S = rael21.fit(X=X,
                                sess=sess,
                                inner_iteration=inner,
                                iteration=outer,
                                batch_size=batch_size,
                                learning_rate=learning_rate,
                                verbose=True)
        l21R = rael21.getRecon(X=X, sess=sess)
        l21H = rael21.transform(X, sess)
        Image.fromarray(
            I.tile_raster_images(X=l21S,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"l21S.png")
        Image.fromarray(
            I.tile_raster_images(X=l21R,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"l21R.png")
        Image.fromarray(
            I.tile_raster_images(X=l21L,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"l21L.png")
        l21H.dump(r"l21H.pkl")
        np.array(rael21.errors).dump(r"l21error.pkl")

        rae = RDAE.RDAE(sess=sess, lambda_=lamda * 10, layers_sizes=layers)
        rL, rS = rae.fit(X=X,
                         sess=sess,
                         learning_rate=learning_rate,
                         batch_size=batch_size,
                         inner_iteration=inner,
                         iteration=outer,
                         verbose=True)
        rR = rae.getRecon(X, sess)
        rH = rae.transform(X, sess)
        Image.fromarray(
            I.tile_raster_images(X=rR,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"rR.png")
        Image.fromarray(
            I.tile_raster_images(X=rS,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"rS.png")
        Image.fromarray(
            I.tile_raster_images(X=rL,
                                 img_shape=inputsize,
                                 tile_shape=(10, 10),
                                 tile_spacing=(1, 1))).save(r"rL.png")
        rH.dump(r"rH.pkl")
        np.array(rae.errors).dump(r"RDAEerror.pkl")
    os.chdir("../")