Ejemplo n.º 1
0
def main_with_centerloss(model, epoch):
    """
    train model
    :param model:
    :param epoch:
    :param data_name: ISIC/SD198
    :return:
    """

    criterion_xent = nn.CrossEntropyLoss()
    criterion_cent = CenterLoss(num_classes=40, feat_dim=1024)
    optimizer_model = optim.SGD(model.parameters(), lr=0.01, momentum=0.9, weight_decay=1e-4)
    optimizer_centloss = optim.SGD(criterion_cent.parameters(), lr=0.5)

    exp_lr_scheduler = lr_scheduler.StepLR(optimizer_model, step_size=80, gamma=0.1)

    trainloader, valloader, testloader = data_loader.load_garbage_classification_data()

    dataloaders = {
        'train': trainloader,
        'val': valloader,
        'test': testloader,
    }

    train_model(model=model, dataloaders=dataloaders, criterion_xent=criterion_xent, criterion_cent=criterion_cent,
                optimizer_model=optimizer_model, optimizer_centloss=optimizer_centloss, scheduler=exp_lr_scheduler,
                num_epochs=epoch, inference=False)
Ejemplo n.º 2
0
def train_garbage_classification(model, epoch):
    """
    train deep models on garbage classification
    :param model:
    :param epoch:
    :return:
    """
    criterion = nn.CrossEntropyLoss()

    optimizer_ft = optim.SGD(model.parameters(),
                             lr=cfg['init_lr'],
                             momentum=0.9,
                             weight_decay=cfg['weight_decay'])

    exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft,
                                           step_size=cfg['lr_decay_step'],
                                           gamma=0.1)

    print('start loading GarbageDataset...')
    trainloader, valloader, testloader = data_loader.load_garbage_classification_data(
    )

    dataloaders = {
        'train': trainloader,
        'val': valloader,
        'test': testloader,
    }

    train_model(model=model,
                dataloaders=dataloaders,
                criterion=criterion,
                optimizer=optimizer_ft,
                scheduler=exp_lr_scheduler,
                num_epochs=epoch,
                inference=False)