def train(args): full = True if args.full == 'true' else False # get data if(args.grocery == 'false'): X_train, Y_train = load_h5(args.train) X_val, Y_val = load_h5(args.val) else: X_train = pickle.load(open("../data/grocery/grocery/grocery-train-data" + args.train)) Y_train = pickle.load(open("../data/grocery/grocery/grocery-train-label" + args.train)) X_val = pickle.load(open("../data/grocery/grocery/grocery-test-data_" + args.train)) Y_val = pickle.load(open("../data/grocery/grocery/grocery-test-label" + args.train)) X_train = np.reshape(X_train, [X_train.shape[0], X_train.shape[1], 1]) Y_train = np.reshape(Y_train, [Y_train.shape[0], Y_train.shape[1], 1]) X_val = np.reshape(X_val, [X_val.shape[0], X_val.shape[1], 1]) Y_val = np.reshape(Y_val, [Y_val.shape[0], Y_val.shape[1], 1]) # reshape piano data if args.piano == 'true': X_train = np.reshape(X_train, [X_train.shape[0], X_val.shape[2], X_val.shape[1]]) Y_train = np.reshape(Y_train, [Y_train.shape[0], Y_val.shape[2], Y_val.shape[1]]) X_val = np.reshape(X_val, [X_val.shape[0], X_val.shape[2], X_val.shape[1]]) Y_val = np.reshape(Y_val, [Y_val.shape[0], Y_val.shape[2], Y_val.shape[1]]) # determine super-resolution level print(Y_train[0].shape) print(Y_train[0]) n_dim, n_chan = Y_train[0].shape r = Y_train[0].shape[1] / X_train[0].shape[1] assert n_chan == 1 # Train seq2seq model if(args.model == 'seq2seq'): model = models.Model2() model.run(X_train, Y_train, X_val, Y_val, n_epoch=args.epochs, r=args.r, speaker=args.speaker, grocery=args.grocery) else: # create model model = get_model(args, n_dim, r, from_ckpt=False, train=True) # train model model.fit(X_train, Y_train, X_val, Y_val, n_epoch=args.epochs, r=args.r, speaker=args.speaker, grocery=args.grocery, piano=args.piano, calc_full_snr = full)
MAX_NB_SENSES = max([len(LEMMA2SENSES[k]) for k in LEMMA2SENSES ]) # max number of senses among all target words MAX_NB_TARGETS = len(LEMMA2SENSES) # how many target words # load word embedding initialized by init_emb (run init_emb first if you don't have this file) with open('pretrained_vectors/needed' + '.pkl', 'rb') as f: WORD_VECTORS = pickle.load(f) WORD_VECTORS["_drop_"] = np.random.uniform( -0.1, 0.1, 300) # add drop vector for drop words NB_EPOCHS = 100 # number of epochs to train x_val, y_val, _ = read_data.read_test_data( LEMMA2INT, LEMMA2SENSES, WORD_VECTORS) # read validation data """train models""" tf.reset_default_graph() train_model = models.Model2(MAX_NB_SENSES, 32, MAX_NB_TARGETS) val_model = models.Model2(MAX_NB_SENSES, 32, MAX_NB_TARGETS, is_training=False) print("train models created") """run train models""" init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) VAL_ACC_LIST = [] LOSS_LIST = [] TRAIN_ACC_LIST = [] start0 = time.time() saver = tf.train.Saver() for nb_epoch in range(NB_EPOCHS):