def main(unused_argv): if len(unused_argv) != 1: # prints a message if you've entered flags incorrectly raise Exception("Problem with flags: %s" % unused_argv) tf.logging.set_verbosity(tf.logging.INFO) # choose what level of logging you want tf.logging.info('Starting running in %s mode...', (FLAGS.mode)) # Change log_root to FLAGS.log_root/FLAGS.exp_name and create the dir if necessary FLAGS.log_root = os.path.join(FLAGS.log_root, FLAGS.exp_name) if not os.path.exists(FLAGS.log_root): if FLAGS.mode == "train": os.makedirs(FLAGS.log_root) else: raise Exception("Logdir %s doesn't exist. Run in train mode to create it." % (FLAGS.log_root)) vocab = Vocab(FLAGS.vocab_path, FLAGS.vocab_size) # create a vocabulary tf.set_random_seed(6) # a seed value for randomness cnn_classifier = CNN(config) #cnn_batcher = ClaBatcher(hps_discriminator, vocab) cnn_batcher = ClaBatcher(FLAGS, vocab) sess_cnn, saver_cnn, train_dir_cnn = setup_training_classifier(cnn_classifier) run_train_cnn_classifier(cnn_classifier, cnn_batcher, 15, sess_cnn, saver_cnn, train_dir_cnn) #util.load_ckpt(saver_cnn, sess_cnn, ckpt_dir="train-classifier") acc = run_test_classification(cnn_classifier, cnn_batcher, sess_cnn, saver_cnn, str('last')) print("The accuracy of sentiment classifier is {:.3f}".format(acc)) generate_confident_examples(cnn_classifier, cnn_batcher, sess_cnn) ## train_conf print("Start training emotional words detection model...") model_class = Classification(FLAGS, vocab) cla_batcher = AttenBatcher(FLAGS, vocab) # read from train_conf sess_cls, saver_cls, train_dir_cls = setup_training_attention_classification(model_class) run_train_attention_classification(model_class, cla_batcher, 15, sess_cls, saver_cls, train_dir_cls) #util.load_ckpt(saver_cls, sess_cls, ckpt_dir="train-classification") acc = run_test_classification(model_class, cla_batcher, sess_cls, saver_cls, str("final_acc")) print("The sentiment classification accuracy of the emotional words detection model is {:.3f}".format(acc)) generated = Generate_training_sample(model_class, vocab, cla_batcher, sess_cls) print("Generating training examples......") generated.generate_training_example("train_filtered") #wirte train generated.generator_valid_test_example("valid_test_filtered") model = Seq2seq_AE(FLAGS, vocab) # Create a batcher object that will create minibatches of data batcher = GenBatcher(vocab, FLAGS) ##read from train sess_ge, saver_ge, train_dir_ge = setup_training_generator(model) generated = Generated_sample(model, vocab, batcher, sess_ge) print("Start training generator......") run_train_auto_encoder(model, batcher, 15, sess_ge, saver_ge, train_dir_ge, generated, cnn_classifier, sess_cnn, cla_batcher)
def main(unused_argv): if len(unused_argv) != 1: # prints a message if you've entered flags incorrectly raise Exception("Problem with flags: %s" % unused_argv) tf.logging.set_verbosity(tf.logging.INFO) # choose what level of logging you want tf.logging.info('Starting running in %s mode...', (FLAGS.mode)) # Change log_root to FLAGS.log_root/FLAGS.exp_name and create the dir if necessary FLAGS.log_root = os.path.join(FLAGS.log_root, FLAGS.exp_name) if not os.path.exists(FLAGS.log_root): if FLAGS.mode == "train": os.makedirs(FLAGS.log_root) else: raise Exception("Logdir %s doesn't exist. Run in train mode to create it." % (FLAGS.log_root)) vocab = Vocab(FLAGS.vocab_path, FLAGS.vocab_size) # create a vocabulary # Make a namedtuple hps, containing the values of the hyperparameters that the model needs hparam_list = ['mode', 'lr', 'adagrad_init_acc', 'rand_unif_init_mag', 'trunc_norm_init_std', 'max_grad_norm', 'hidden_dim', 'emb_dim', 'batch_size', 'max_dec_steps', 'max_enc_steps'] hps_dict = {} for key, val in FLAGS.__flags.items(): # for each flag if key in hparam_list: # if it's in the list hps_dict[key] = val # add it to the dict hps_generator = namedtuple("HParams", hps_dict.keys())(**hps_dict) hparam_list = ['lr', 'adagrad_init_acc', 'rand_unif_init_mag', 'trunc_norm_init_std', 'max_grad_norm', 'hidden_dim', 'emb_dim', 'batch_size', 'max_dec_steps'] hps_dict = {} for key, val in FLAGS.__flags.items(): # for each flag if key in hparam_list: # if it's in the list hps_dict[key] = val # add it to the dict hps_discriminator = namedtuple("HParams", hps_dict.keys())(**hps_dict) tf.set_random_seed(6) # a seed value for randomness cnn_classifier = CNN(config) cnn_batcher = ClaBatcher(hps_discriminator, vocab) sess_cnn, saver_cnn, train_dir_cnn = setup_training_classifier(cnn_classifier) run_train_cnn_classifier(cnn_classifier, cnn_batcher, 0, sess_cnn, saver_cnn, train_dir_cnn) #util.load_ckpt(saver_cnn, sess_cnn, ckpt_dir="train-classifier") acc = run_test_classification(cnn_classifier, cnn_batcher, sess_cnn, saver_cnn, str('last')) print("the last stored cnn model acc = ", acc) generate_confident_examples(cnn_classifier, cnn_batcher, sess_cnn) ## train_conf print("Start pre-training attention classification......") model_class = Classification(hps_discriminator, vocab) cla_batcher = AttenBatcher(hps_discriminator, vocab) # read from train_conf sess_cls, saver_cls, train_dir_cls = setup_training_classification(model_class) run_pre_train_classification(model_class, cla_batcher, 0, sess_cls, saver_cls, train_dir_cls) #util.load_ckpt(saver_cls, sess_cls, ckpt_dir="train-classification") acc = run_test_classification(model_class, cla_batcher, sess_cls, saver_cls, str("final_acc")) print("the last stored attention model acc = ", acc) acc = run_test_classification(cnn_classifier, cla_batcher, sess_cnn, saver_cnn, str("final_acc")) print("the last stored classifier model acc = ", acc) generated = Generate_training_sample(model_class, vocab, cla_batcher, sess_cls) print("Generating training examples......") #generated.generate_training_example("train_filtered") #wirte train #generated.generator_validation_example("valid_filtered") #generated.generator_test_example("test_filtered") model = Seq2seq_AE(hps_generator, vocab) # Create a batcher object that will create minibatches of data batcher = GenBatcher(vocab, hps_generator) ##read from train sess_ge, saver_ge, train_dir_ge = setup_training_generator(model) generated = Generated_sample(model, vocab, batcher, sess_ge) print("Start pre-training generator......") run_pre_train_auto_encoder(model, batcher, 0, sess_ge, saver_ge, train_dir_ge, generated, cnn_classifier, sess_cnn, cla_batcher)