configs/cifar10_k_ve.py (58 lines of code) (raw):
from configs.default_cifar10_configs import get_default_configs
import math
def get_config():
config = get_default_configs()
# training
training = config.training
training.sde = "kvesde"
training.loss = "dsm"
training.batch_size = 512
training.n_iters = 400001
training.n_jitted_steps = 2
training.snapshot_freq = 10000
training.snapshot_freq_for_preemption = 5000
training.log_freq = 50
training.eval_freq = 100
# sampling
sampling = config.sampling
sampling.method = "heun"
sampling.denoise = True
# evaluation
evaluate = config.eval
evaluate.begin_ckpt = 1
evaluate.end_ckpt = 40
# model
model = config.model
model.name = "ncsnpp"
model.ema_rate = math.exp(
math.log(0.5) / (0.5e6 / training.batch_size)
) # half life of 0.5M images
model.normalization = "GroupNorm"
model.nonlinearity = "swish"
model.nf = 128
model.ch_mult = (2, 2, 2)
model.num_res_blocks = 4
model.attn_resolutions = (16,)
model.resamp_with_conv = True
model.conditional = True
model.fir = True
model.fir_kernel = [1, 3, 3, 1]
model.skip_rescale = True
model.resblock_type = "biggan"
model.progressive = "none"
model.progressive_input = "residual"
model.progressive_combine = "sum"
model.attention_type = "ddpm"
model.embedding_type = "fourier"
model.init_scale = 0.0
model.fourier_scale = 16
model.conv_size = 3
model.rho = 7.0
model.data_std = 0.5
model.num_scales = 18
model.dropout = 0.13
# optimization
optim = config.optim
optim.weight_decay = 0
optim.optimizer = "Adam"
optim.lr = 1e-3
optim.beta1 = 0.9
optim.eps = 1e-8
optim.warmup = int(1e7 / training.batch_size) # warmup for 10M images
optim.grad_clip = float("inf") # no gradient clipping
return config