def main(_): # Set configuration config = AttrDict(default_config()) # Build one hot mnist model. model = benchmark_model.build_tf_one_hot_model(batch_size=config.batch_size, use_bias=config.use_bias, activation=config.activation) # Load one hot mnist data. (x_train, y_train), (x_test, y_test) = benchmark_model.load_one_hot_data(dataset=config.dataset) # Testing whether the dataset have correct shape. assert x_train.shape == (60000, 784) assert y_train.shape == (60000, 10) # Minimize model's loss with NMF optimizer. # optimizer = NMFOptimizer(config) optimizer = NMFOptimizer(config=config) train_op = optimizer.minimize(model.frob_norm) # Minimize model's loss with Adam optimizer. bp_optimizer = tf.train.AdamOptimizer(config.learning_rate) bp_train_op = bp_optimizer.minimize(model.cross_entropy) init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for i in range(1000): x, y = benchmark_model.batch(x_train, y_train, batch_size=config.batch_size) loss, _ = sess.run([optimizer.autoencoder_loss, optimizer.autoencoder_train_op], feed_dict={model.inputs: x}) print('\rloss {}'.format(loss), end='', flush=True) print() _train_and_test = functools.partial(train_and_test, sess=sess, model=model, x_train=x_train, y_train=y_train, x_test=x_test, y_test=y_test, batch_size=config.batch_size) print('NMF-optimizer') # Train with NMF optimizer. _train_and_test(train_op, num_iters=config.num_mf_iters) print('Adam-optimizer') # Train with Adam optimizer. _train_and_test(bp_train_op, num_iters=config.num_bp_iters)
def main(_): # Set configuration config = AttrDict(default_config()) # Build one hot mnist model. model = benchmark_model.build_tf_cross_entropy_model( batch_size=config.batch_size, use_bias=config.use_bias, activation=config.activation) # Load one hot mnist data. (x_train, y_train), (x_test, y_test) = benchmark_model.load_one_hot_data( dataset=config.dataset) # Testing whether the dataset have correct shape. assert x_train.shape == (60000, 784) assert y_train.shape == (60000, 10) # Minimize model's loss with NMF optimizer. # optimizer = NMFOptimizer(config) optimizer = NMFOptimizer() train_op = optimizer.minimize(model.cross_entropy) # Minimize model's loss with Adam optimizer. bp_optimizer = tf.train.AdamOptimizer(config.learning_rate) bp_train_op = bp_optimizer.minimize(model.cross_entropy) init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) _train_and_test = functools.partial(train_and_test, sess=sess, model=model, x_train=x_train, y_train=y_train, x_test=x_test, y_test=y_test, batch_size=config.batch_size) print('NMF-optimizer') # Train with NMF optimizer. _train_and_test(train_op, num_iters=config.num_mf_iters) print('Adam-optimizer') # Train with Adam optimizer. _train_and_test(bp_train_op, num_iters=config.num_bp_iters)