def create_base_transform(i): if args.base_transform_type == 'rq': return transforms.PiecewiseRationalQuadraticCouplingTransform( mask=utils.create_alternating_binary_mask( features=dim, even=(i % 2 == 0) ), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, num_blocks=args.num_transform_blocks, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ), num_bins=args.num_bins, apply_unconditional_transform=False, ) elif args.base_transform_type == 'affine': return transforms.AffineCouplingTransform( mask=utils.create_alternating_binary_mask( features=dim, even=(i % 2 == 0) ), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, num_blocks=args.num_transform_blocks, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ) ) elif args.base_transform_type == 'rl': return transforms.PiecewiseRationalLinearCouplingTransform( mask=utils.create_alternating_binary_mask( features=dim, even=(i % 2 == 0) ), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, num_blocks=args.num_transform_blocks, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ), num_bins=args.num_bins, apply_unconditional_transform=False, ) else: raise ValueError
def create_resnet(in_features, out_features): return nn_.ResidualNet( in_features, out_features, hidden_features=hidden_features, num_blocks=num_blocks_per_layer, activation=activation, dropout_probability=dropout_probability, use_batch_norm=batch_norm_within_layers )
# num_blocks=2, # use_batch_norm=True # ), # num_bins=args.num_bins, # apply_unconditional_transform=False # ) # ]) transform = transforms.CompositeTransform([ # transforms.Sigmoid(), transforms.PiecewiseRationalLinearCouplingTransform( mask=utils.create_alternating_binary_mask(features=dim, even=True), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=32, num_blocks=2, use_batch_norm=True ), tails='linear', tail_bound=5, num_bins=args.num_bins, apply_unconditional_transform=False ), transforms.PiecewiseRationalLinearCouplingTransform( mask=utils.create_alternating_binary_mask(features=dim, even=False), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=32, num_blocks=2,
def create_net(in_features, out_features): return nn_.ResidualNet(in_features, out_features, hidden_features=30, num_blocks=5)
def create_base_transform(i): if args.base_transform_type == 'affine-coupling': return transforms.AffineCouplingTransform( mask=utils.create_alternating_binary_mask(features, even=(i % 2 == 0)), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, context_features=None, num_blocks=args.num_transform_blocks, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ) ) elif args.base_transform_type == 'quadratic-coupling': return transforms.PiecewiseQuadraticCouplingTransform( mask=utils.create_alternating_binary_mask(features, even=(i % 2 == 0)), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, context_features=None, num_blocks=args.num_transform_blocks, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ), num_bins=args.num_bins, tails='linear', tail_bound=args.tail_bound, apply_unconditional_transform=args.apply_unconditional_transform ) elif args.base_transform_type == 'rq-coupling': return transforms.PiecewiseRationalQuadraticCouplingTransform( mask=utils.create_alternating_binary_mask(features, even=(i % 2 == 0)), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, context_features=None, num_blocks=args.num_transform_blocks, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ), num_bins=args.num_bins, tails='linear', tail_bound=args.tail_bound, apply_unconditional_transform=args.apply_unconditional_transform ) elif args.base_transform_type == 'affine-autoregressive': return transforms.MaskedAffineAutoregressiveTransform( features=features, hidden_features=args.hidden_features, context_features=None, num_blocks=args.num_transform_blocks, use_residual_blocks=True, random_mask=False, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ) elif args.base_transform_type == 'quadratic-autoregressive': return transforms.MaskedPiecewiseQuadraticAutoregressiveTransform( features=features, hidden_features=args.hidden_features, context_features=None, num_bins=args.num_bins, tails='linear', tail_bound=args.tail_bound, num_blocks=args.num_transform_blocks, use_residual_blocks=True, random_mask=False, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ) elif args.base_transform_type == 'rq-autoregressive': return transforms.MaskedPiecewiseRationalQuadraticAutoregressiveTransform( features=features, hidden_features=args.hidden_features, context_features=None, num_bins=args.num_bins, tails='linear', tail_bound=args.tail_bound, num_blocks=args.num_transform_blocks, use_residual_blocks=True, random_mask=False, activation=F.relu, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ) else: raise ValueError
distribution = distributions.TweakedUniform( low=torch.zeros(dim), high=torch.ones(dim) ) transform = transforms.CompositeTransform([ transforms.CompositeTransform([ transforms.PiecewiseRationalQuadraticCouplingTransform( mask=utils.create_alternating_binary_mask( features=dim, even=(i % 2 == 0) ), transform_net_create_fn=lambda in_features, out_features: nn_.ResidualNet( in_features=in_features, out_features=out_features, hidden_features=args.hidden_features, num_blocks=args.num_transform_blocks, dropout_probability=args.dropout_probability, use_batch_norm=args.use_batch_norm ), num_bins=args.num_bins, tails=None, tail_bound=1, # apply_unconditional_transform=args.apply_unconditional_transform, min_bin_width=args.min_bin_width ), ]) for i in range(args.num_flow_steps) ]) flow = flows.Flow(transform, distribution).to(device) path = os.path.join(cutils.get_final_root(), '{}-final.t'.format(dataset_name)) state_dict = torch.load(path)