Exemple #1
0
    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)