Beispiel #1
0
def main(num_layer, gamma):
    x_train, y_train = du.load_mnist_data('training')
    x_test, y_test = du.load_mnist_data('testing')

    input_dim = 784
    latent_dim = 50
    encoder_dim = np.ones([num_layer], np.int32) * 200
    decoder_dim = np.ones([num_layer], np.int32) * 200
    sample_num = 1
    batch_size = 20
    stage_num = 8

    #    model = VaeSimple(input_dim, latent_dim, encoder_dim, decoder_dim, 5000)
    model = VaeScale(input_dim,
                     latent_dim,
                     encoder_dim,
                     decoder_dim,
                     5000,
                     gamma=gamma)
    with tf.Session() as sess:
        saver = tf.train.Saver()
        model.restore_from(saver, sess, 'model/stage' + str(stage_num - 1))

        nll = test_model(model, x_test, batch_size, sess)
        print('NLL = {0}.'.format(nll))
def main():
    model_dimension = [784, 500, 500, 2000, 10]
    model = VAEClustering(100, model_dimension, 10, 'sigmoid')

    train_data, train_label = du.load_mnist_data('training')
    test_data, test_label = du.load_mnist_data('testing')

    #    train_model(model, train_data, 100)
    test_model(model, train_data, train_label)
    test_model(model, test_data, test_label)
Beispiel #3
0
def main(exploration_ratio):
    model = VAEClustering(100, [784, 500, 500, 2000, 10], 10, 0.01, 'sigmoid')
    model.build_network()

    optimizer = VAEOptimizer(model)

    x_train, y_train = du.load_mnist_data('training')
    x_test, y_test = du.load_mnist_data('testing')
    train_model(model, optimizer, x_train, y_train, 1000, exploration_ratio)
    test_model(model, x_train, y_train)
    test_model(model, x_test, y_test)
Beispiel #4
0
def main(num_layer, gamma):
    x_train, y_train = du.load_mnist_data('training')
    x_test, y_test = du.load_mnist_data('testing')

    input_dim = 784
    latent_dim = 50
    encoder_dim = np.ones([num_layer], np.int32) * 200
    decoder_dim = np.ones([num_layer], np.int32) * 200
    sample_num = 1
    batch_size = 20
    stage_num = 8

    #    model = VaeSimple(input_dim, latent_dim, encoder_dim, decoder_dim, sample_num)
    model = VaeScale(input_dim,
                     latent_dim,
                     encoder_dim,
                     decoder_dim,
                     sample_num,
                     gamma=gamma)

    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        writer = tf.summary.FileWriter('graph', sess.graph)
        saver = tf.train.Saver()

        for stage in range(stage_num):
            lr = 0.001 * 10**(-float(stage) / 7.0)
            num_epoch = 3**stage
            print('Stage = {0}, lr = {1}, num_epoch = {2}.'.format(
                stage, lr, num_epoch))
            train_model(model, x_train, lr, num_epoch, batch_size, sess,
                        writer)
            model.save_to(saver, sess, 'model/stage' + str(stage))

    sess.close()
    tf.reset_default_graph()

    #    model = VaeSimple(input_dim, latent_dim, encoder_dim, decoder_dim, 5000)
    model = VaeScale(input_dim,
                     latent_dim,
                     encoder_dim,
                     decoder_dim,
                     5000,
                     gamma=gamma)
    with tf.Session() as sess:
        saver = tf.train.Saver()
        model.restore_from(saver, sess, 'model/stage' + str(stage_num - 1))

        nll = test_model(model, x_test, batch_size, sess)
        print('NLL = {0}.'.format(nll))
Beispiel #5
0
def main():

    images_train, labels_train = du.load_mnist_data('training')
    #    images_test, labels_test = load_mnist_data('testing')

    model = SaeNet(DIM_LAYER, 100, 0.0001, 'sigmoid')
    model.build_graph()

    train_model(model, images_train, labels_train)
Beispiel #6
0
def main():

    # exp info
    save_dir = os.path.join('experiments', 'save')
    if not os.path.exists(save_dir):
        os.mkdir(save_dir)
    exp_id = args.exp_id if args.exp_id != '' else str(
        len(os.listdir(save_dir)))
    save_path = os.path.join(save_dir, exp_id)
    if not os.path.exists(save_path):
        os.mkdir(save_path)

    summary_dir = os.path.join('experiments', 'summary')
    if not os.path.exists(summary_dir):
        os.mkdir(summary_dir)
    summary_path = os.path.join(summary_dir, exp_id)
    if not os.path.exists(summary_path):
        os.mkdir(summary_path)

    # prepare data
    x_train, y_train = load_mnist_data('training')
    x_test, y_test = load_mnist_data('testing')
    print(np.shape(x_train))
    print(np.shape(x_test))

    # model
    model = VaeModel(args.num_hidden, 1, args.shortcut, args.dense,
                     args.continuous)
    optimizer = VaeOptimizer(model)

    # train
    if not args.val:
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            writer = tf.summary.FileWriter(summary_path, sess.graph)
            saver = tf.train.Saver()

            for stage in range(args.num_stage):
                lr = 0.001 * math.pow(0.1,
                                      float(stage) / float(args.num_stage - 1))
                epochs = math.pow(3, stage)
                kl_coef = 0.001 * math.pow(
                    1000,
                    float(stage) /
                    float(args.num_stage - 1)) if args.warmup else 1.0
                print('Stage = {}, lr = {:.6f}, kl_coef = {:.4f} epochs = {}.'.
                      format(stage, lr, kl_coef, epochs))
                train(optimizer, sess, x_train, epochs, lr, kl_coef, writer)
                saver.save(sess, os.path.join(save_path, str(stage)))

    tf.reset_default_graph()
    model = VaeModel(args.num_hidden, 5000, args.shortcut, args.dense,
                     args.continuous)

    with tf.Session() as sess:
        saver = tf.train.Saver()
        saver.restore(sess, os.path.join(save_path, str(args.num_stage - 1)))
        nll = test_nll(model, sess, x_test)
        print('NLL = {:.4f}.'.format(nll))

        wo = model.wo.eval(sess)
        wo_norm = np.sum(np.square(wo), -1)
        wo_norm = -np.sort(-wo_norm)
        fid = open(os.path.join(save_path, 'wo.txt'), 'wt')
        for w in wo_norm:
            fid.write('{:.4f}\n'.format(w))
        fid.close()
        print('Num active: {}.'.format(
            np.sum(wo_norm > 0.05 * np.max(wo_norm))))