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)
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)
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))
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)
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))))