X = X.to(device)
            Y = Y.to(device)

            logits = model(X)
            preds = torch.max(logits, 1)[1].view(Y.size())
            loss = criterion(logits, Y)

            total_epoch_loss += loss.item()
            total_epoch_correct += (preds == Y).float().sum().item()
            total_count += len(Y)

    return total_epoch_loss / len(_iter), total_epoch_correct / total_count


if __name__ == "__main__":
    embedding, train_iter, valid_iter, test_iter = get_dataset(
        params.dataset, rate=params.noise_ratio, batch_size=params.batch_size)
    model_params = {}
    if params.dataset == "IMDB":
        model_params["output_size"] = 2
        model_params["hidden_size"] = 256

    if params.model == "LSTM" or params.model == "LSTMATT":
        model_params["weights"] = embedding

    if params.dataset == "CIFAR100":
        model_params["num_classes"] = 100

    model = get_model(params.model, **model_params)

    if os.path.exists(save_path) and params.load:
        print("model loaded")
Exemplo n.º 2
0
            Y = Y.reshape(-1, 1)
            top1_num_corrects = (preds1 == Y).float().sum()
            top5_num_corrects = (preds5 == Y.expand_as(preds5)).float().sum()

            total_epoch_loss += loss.item()
            total_epoch_acc1 += top1_num_corrects.item()
            total_epoch_acc5 += top5_num_corrects.item()
            total_counter += len(Y)

    return (total_epoch_loss / len(_iter),
            total_epoch_acc1 / total_counter * 100,
            total_epoch_acc5 / total_counter * 100)


if __name__ == "__main__":
    train_iter, test_iter = get_dataset("TinyImageNet", rate=params.noise_ratio, batch_size=params.batch_size)

    model = get_model(params.model)
    if params.load_from:
        model.load_state_dict(torch.load(params.load_from))
    model.to(device)
    optim = Vadam2(model.parameters(), lr=params.lr * params.batch_size / 128, eps=1e-15,
                   v=params.v, alpha=params.alpha, auto_v=params.auto,
                   weight_decay=params.weight_decay)
    imgsize = EfficientNet.get_image_size(params.model)
    top1acc, top5acc = [], []
    for epoch in range(params.num_epochs):
        train_loss, train_acc = train_model(model, train_iter, size=imgsize)
        test_loss, test_acc1, test_acc5 = eval_model(model, test_iter, size=imgsize)
        top1acc.append(test_acc1)
        top5acc.append(test_acc5)