Beispiel #1
0
def build_nnet(dims, activation_fn=torch.nn.ReLU):
    nnet = []
    domains, codomains = parse_vnorms()
    if args.learn_p:
        if args.mixed:
            domains = [torch.nn.Parameter(torch.tensor(0.)) for _ in domains]
        else:
            domains = [torch.nn.Parameter(torch.tensor(0.))] * len(domains)
        codomains = domains[1:] + [domains[0]]
    for i, (in_dim, out_dim, domain,
            codomain) in enumerate(zip(dims[:-1], dims[1:], domains,
                                       codomains)):
        nnet.append(activation_fn())
        nnet.append(
            base_layers.get_linear(
                in_dim,
                out_dim,
                coeff=args.coeff,
                n_iterations=args.n_lipschitz_iters,
                atol=args.atol,
                rtol=args.rtol,
                domain=domain,
                codomain=codomain,
                zero_init=(out_dim == 2),
            ))
    return torch.nn.Sequential(*nnet)
def build_nnet(dims, activation_fn=torch.nn.ReLU):
    nnet = []
    domains, codomains = parse_vnorms()
    for i, (in_dim, out_dim, domain,
            codomain) in enumerate(zip(dims[:-1], dims[1:], domains,
                                       codomains)):
        if i > 0:
            nnet.append(activation_fn())
        nnet.append(
            base_layers.get_linear(
                in_dim,
                out_dim,
                coeff=args.coeff,
                n_iterations=args.n_lipschitz_iters,
                atol=args.sn_tol,
                rtol=args.sn_tol,
                domain=domain,
                codomain=codomain,
                zero_init=(out_dim == data_dim),
            ))
    return torch.nn.Sequential(*nnet)