Ejemplo n.º 1
0
                        cut_idx)  #temp_model 用的是当前model后半部分,models[]前半部分
                    for i in range(task + 1):  #循环不同task
                        acc = test_model(temp_model, labels[i], test_loader[i],
                                         gpu)
                        print('Device Task: {}\tTest Task: {}\tAccuracy: {}'.
                              format(sub_task, i, acc))
                        with open(result_file, 'a') as f:
                            # Current server parameter (task) + device parameter (task) --> training a given task
                            f.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(
                                task, iteration, loss, sub_task, i, acc))
        ewcs.append(splitEWC(model, train_loader[task], cut_idx, gpu))


if __name__ == '__main__':
    if args.dataset == 'permuted':
        train_loader, test_loader, labels = get_permute_mnist(
            args.bsz, args.num_task, [1829, 241, 43, 12649, 4443])
    elif args.dataset == 'rotated':
        train_loader, test_loader, labels = get_rotate_mnist(
            args.bsz, args.num_task)
    else:
        train_loader, test_loader, labels = get_split_mnist(
            args.bsz, args.num_task)

    if args.method == 'ewc':
        ewc_process(train_loader,
                    test_loader,
                    labels,
                    result_file='./result/{}_{}_{}.txt'.format(
                        args.method, args.dataset, args.split))
    elif args.method == 'online':
        ewc_process(train_loader,
Ejemplo n.º 2
0
                        print('Device Task: {}\tTest Task: {}\tAccuracy: {}'.
                              format(sub_task, i, acc))
                        with open(result_file, 'a') as f:
                            # Current server parameter (task) + device parameter (task) --> training a given task
                            f.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(
                                task, iteration, loss, sub_task, i, acc))
                if iteration % 20 == 0:
                    for param_group in optimizer.param_groups:
                        param_group['lr'] *= 0.95
        ewcs.append(splitEWC(model, train_loader[task], cut_idx, gpu))


if __name__ == '__main__':
    if args.dataset == 'permuted':
        # train_loader, test_loader, labels = get_permute_mnist(args.bsz, args.num_task, [1829, 241, 43, 12649, 4443])
        train_loader, test_loader, labels = get_permute_mnist(
            args.bsz, args.num_task)
    elif args.dataset == 'rotated':
        train_loader, test_loader, labels = get_rotate_mnist(
            args.bsz, args.num_task)
    elif 'mnist' in args.dataset:
        train_loader, test_loader, labels = get_split_mnist(
            args.bsz, args.num_task)
    elif 'cifar' in args.dataset:
        train_loader, test_loader, labels = get_split_cifar(
            args.bsz, args.num_task)

    if args.method == 'ewc':
        ewc_process(train_loader,
                    test_loader,
                    labels,
                    'class' in args.dataset,