- 创建yaml文件,将配置的参数写进去,格式如下
# Copyright (C) 2017 NVIDIA Corporation. All rights reserved.
# Licensed under the CC BY-NC-SA 4.0 license (https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).
# logger options
image_save_iter: 1000 # How often do you want to save output images during training
image_display_iter: 10 # How often do you want to display output images during training
display_size: 8 # How many images do you want to display each time
snapshot_save_iter: 10000 # How often do you want to save trained models
log_iter: 1 # How often do you want to log the training stats
# optimization options
max_iter: 1000000 # maximum number of training iterations
batch_size: 1 # batch size
weight_decay: 0.0001 # weight decay
beta1: 0.5 # Adam parameter
beta2: 0.999 # Adam parameter
init: kaiming # initialization [gaussian/kaiming/xavier/orthogonal]
lr: 0.0001 # initial learning rate
lr_policy: step # learning rate scheduler
step_size: 100000 # how often to decay learning rate
gamma: 0.5 # how much to decay learning rate
gan_w: 1 # weight of adversarial loss
recon_x_w: 10 # weight of image reconstruction loss
recon_h_w: 0 # weight of hidden reconstruction loss
recon_kl_w: 0.01 # weight of KL loss for reconstruction
recon_x_cyc_w: 10 # weight of cycle consistency loss
recon_kl_cyc_w: 0.01 # weight of KL loss for cycle consistency
vgg_w: 0 # weight of domain-invariant perceptual loss
# model options
gen:
dim: 64 # number of filters in the bottommost layer
activ: relu # activation function [relu/lrelu/prelu/selu/tanh]
n_downsample: 2 # number of downsampling layers in content encoder
n_res: 4 # number of residual blocks in content encoder/decoder
pad_type: reflect # padding type [zero/reflect]
dis:
dim: 64 # number of filters in the bottommost layer
norm: none # normalization layer [none/bn/in/ln]
activ: lrelu # activation function [relu/lrelu/prelu/selu/tanh]
n_layer: 4 # number of layers in D
gan_type: lsgan # GAN loss [lsgan/nsgan]
num_scales: 3 # number of scales
pad_type: reflect # padding type [zero/reflect]
# data options
input_dim_a: 3 # number of image channels [1/3]
input_dim_b: 3 # number of image channels [1/3]
num_workers: 8 # number of data loading threads
new_size: 256 # first resize the shortest image side to this size
crop_image_height: 256 # random crop image of this height
crop_image_width: 256 # random crop image of this width
data_root: ./datasets/lol/ # dataset folder location
wsy: [1,2,3,4,5]
- 加载配置文件,使用其参数
def get_config(config):
import yaml
with open(config, 'r') as stream:
return yaml.load(stream, Loader=yaml.FullLoader)
config_path = 'filename.yaml'
config = get_config(config_path)
由此加载而来的 config 的数据结构为字典。通过键值对即可获取参数的值。值得一提的是,这种读取方式会保留配置文件参数的数据类型,比如
type(config['max_iter'])
><class 'int'>
type(config['gen'])
><class 'dict'>
>type(config['wsy'])
><class 'list'>
与 .ini 配置文件在使用时会把所有参数当做字符串读出相比,这种保留格式的风格显然是好的。