def train(args): data = InputData(args.input, args.min_count, args.sample) output_file_name = args.output emb_size = len(data.word2id) emb_dimension = args.dim batch_size = args.mb window_size = args.window n_negs = args.n_negs iteration = args.iters initial_lr = args.lr use_cuda = args.cuda skip_gram_model = SkipGramModel(emb_size, emb_dimension) if use_cuda: skip_gram_model = skip_gram_model.cuda() optimizer = optim.SGD(skip_gram_model.parameters(), lr=initial_lr) pair_count = data.evaluate_pair_count(window_size) batch_count = iteration * pair_count / batch_size process_bar = tqdm(range(int(batch_count))) # skip_gram_model.save_embedding( # data.id2word, 'begin_embedding.txt', use_cuda) for i in process_bar: pos_pairs = data.get_batch_pairs(batch_size, window_size) neg_v = data.get_neg_v_neg_sampling(pos_pairs, n_negs) pos_u = [pair[0] for pair in pos_pairs] pos_v = [pair[1] for pair in pos_pairs] pos_u = torch.LongTensor(pos_u) pos_v = torch.LongTensor(pos_v) neg_v = torch.LongTensor(neg_v) if use_cuda: pos_u = pos_u.cuda() pos_v = pos_v.cuda() neg_v = neg_v.cuda() optimizer.zero_grad() loss = skip_gram_model(pos_u, pos_v, neg_v) loss.backward() optimizer.step() process_bar.set_description( "\rLoss: %0.8f, lr: %0.6f" % (loss.item(), optimizer.param_groups[0]['lr'])) if i * batch_size % 100000 == 0: lr = initial_lr * (1.0 - 1.0 * i / batch_count) for param_group in optimizer.param_groups: param_group['lr'] = lr skip_gram_model.save_embedding(data.id2word, output_file_name, use_cuda)
def predictFlow(np_arr, model): input_data = InputData(np_arr, removePOffset=True, makeDimLess=True) input_arr, target_arr = input_data.input, input_data.target input_tr = torch.tensor(input_arr) input_batch = input_tr.unsqueeze(0) print('Running inference') output_batch = model(input_batch.float()) output_tr = output_batch.squeeze(0) output_arr = output_tr.detach().numpy() print('Saving output') saveOutput(output_arr, target_arr) return 1
batch_size = 32 print("*** [Testing] ***") print("Dataset: [{}]".format(conf["dataset"])) print("test_data_path: [{}]".format(conf["test_data_path"])) print("anomaly_class: [{}]".format(anoCls)) print("batch_size: [{}]".format(batch_size)) print("model_ticket: [{}]".format(model_ticket)) print("dropout: [{}]".format(dropout)) print( "===================================================================") if is_training == True: if conf["dataset"] != "MNIST": cb_ob = InputData(conf["train_data_path"], conf["valid_data_path"], conf["anomaly_data_path"], None) else: cb_ob = InputMNISTData() cb_ob.load_input_data(anoCls) MODEL = model2(batch_size=batch_size, max_iters=max_iters, repeat=data_repeat, dropout=dropout, model_path=model_path, data_ob=cb_ob, log_dir=root_log_dir, output_dir=output_dir, learnrate_init=learn_rate_init, dataset_name=dataset_name, anoCls=anoCls,