예제 #1
0
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)
예제 #2
0
    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):