word2id = {} for word in tokens: word2id[word] = id id += 1 args.embed_num = len(tokens) args.class_num = 2 args.kernel_sizes = [int(k) for k in args.kernel_sizes.split(',')] #print("\nParameters:") #for attr, value in sorted(args.__dict__.items()): # print("\t{}={}".format(attr.upper(), value)) model = CNN_Text(args) if torch.cuda.is_available(): model.cuda() optimizer = torch.optim.Adam(model.parameters(), lr=args.lr) report_interval = 5000 for epoch in range(1, args.epochs + 1): train_batch_i = 0 batch_counter = 0 accumulated_loss = 0 train_sents_scaned = 0 train_num_correct = 0 model.train() print('--' * 20) start_time = time.time() train_data = np.array(train_data) train_labels = np.array(train_labels) rand_idx = np.random.permutation(len(train_data))
use_cuda = torch.cuda.is_available() #get data train_loader = Data.DataLoader(dataset=CustomDataset(path="train.json", balance=False), batch_size=BATCH_SIZE, shuffle=True) test_loader = Data.DataLoader(dataset=CustomDataset(path="test.json", balance=False), batch_size=BATCH_SIZE, shuffle=True) #initialize model cnn = CNN_Text() if use_cuda: cnn = cnn.cuda() optimizer = torch.optim.Adam(cnn.parameters(), lr=LR, weight_decay=0.0005) #train for epoch in range(EPOCH): print("epoch :") if epoch % 5 == 0: test(cnn, test_loader, use_cuda) for step, data in enumerate(train_loader): vec, lens, label = data #print(vec.shape) if use_cuda: vec = vec.cuda() label = label.cuda() output = cnn(vec) label = label.to(dtype=torch.int64)