예제 #1
0
파일: main.py 프로젝트: rkassana/ssl-cl

    # add list of ssl models to pass for training
    ssl_models = []

    ssl_dict = {}

    for method in ssl_methods:

        if 'byol' in ssl_methods:
            byol_model = BYOL(
                encoder,
                image_size=32,
                hidden_layer= -1
            )
            byol_model.to(device)
            ssl_dict['byol'] = byol_model


        if 'xxx' in ssl_methods:  # add extra ssl model here
            pass
        if 'ae' in ssl_methods:  # add extra ssl model here
            ae = AE(encoder=encoder)
            ae.to(device)
            ssl_dict['ae'] = ae



    # tasks = [[0, 1], [2], [3]]
    # epochs = 2, lr = 0.0001, report_step = 20
    tasks = create_tasks(dataset_name=dataset_name, cil_step=cil_step, cil_start=cil_start)
예제 #2
0
data_dir = os.path.join(root_dir, 'train')
csv_path = os.path.join(root_dir, 'train.csv')

if __name__ == '__main__':

    train_set = MiniDataset(csv_path, data_dir)
    train_loader = DataLoader(train_set,
                              batch_size=BATCH_SIZE,
                              num_workers=NUM_WORKERS,
                              shuffle=True)

    resnet = models.resnet50(pretrained=False)
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

    learner = BYOL(resnet, image_size=IMAGE_SIZE, hidden_layer='avgpool')
    learner.to(device)
    opt = torch.optim.Adam(learner.parameters(), lr=LR)

    learner.train()
    for epoch in range(EPOCHS):

        for i, data in enumerate(train_loader):
            data = data.to(device)
            loss = learner(data)
            opt.zero_grad()
            loss.backward()
            opt.step()
            learner.update_moving_average(
            )  # update moving average of target encoder

        print('epoch {} / {}, loss={:.4f}'.format(epoch + 1, EPOCHS,