字典类变成属性类需要自己写一个函数类,不过实现也比较简单。
字典类变成属性类
属性类变成字典类有直接的函数
vars
属性类变成字典类
如果是使用opt = parser.parse_args()
那么opt
就是一个属性类的实例,其内部元素size
是通过opt.size
的方式来进行引用和修改的。
字典类是通过读取配置文件config = yaml.load(f)
得到的。
- 字典类
config
转换成属性类的目的是为了方便使用,比如在程序中使用的话就可以直接config.size
而不是config["size"]
。 - 属性类'opt
通过
vars转换成字典类目的是将配置文件里面的
config和通过命令行的参数传递进来的
opt`,结合成一个字典,然后存储起来,这样就知道本次训练的全部超参数了。 - 所以尽量把一些改动频率很是频繁的超参数放在配置文件里面写采用
yaml
的文件格式,这样方便易懂。 - 把一些改动频率不大的超参数比如训练数据的地址这种用
default
的参数设置,同时一些开关参数通过action='store_true'
来设置 - 读取到所有的超参数以后将其保存起来,以方便我们以后进行查看
with open(yamlpath, "w", encoding="utf-8") as f:
yaml.dump(desired_caps, f)
parser.add_argument('-config', default='default.yaml', type=str,
help="config file")
parser.add_argument('-gpus', default=[], nargs='+', type=int,
help="Use CUDA on the listed devices.")
parser.add_argument('-restore', default='', type=str,
help="restore checkpoint")
parser.add_argument('-seed', type=int, default=1234,
help="Random seed")
parser.add_argument('-model', default='seq2seq', type=str,
help="Model selection")
parser.add_argument('-mode', default='train', type=str,
help="Mode selection")
parser.add_argument('-module', default='seq2seq', type=str,
help="Module selection")
parser.add_argument('-log', default='', type=str,
help="log directory")
parser.add_argument('-num_processes', type=int, default=4,
help="number of processes")
parser.add_argument('-refF', default='', type=str,
help="reference file")
parser.add_argument('-unk', action='store_true', help='replace unk')
parser.add_argument('-char', action='store_true', help='char level decoding')
parser.add_argument('-length_norm', action='store_true', help='replace unk')
parser.add_argument('-pool_size', type=int, default=0, help="pool size of maxout layer")
parser.add_argument('-scale', type=float, default=1, help="proportion of the training set")
parser.add_argument('-max_split', type=int, default=0, help="max generator time steps for memory efficiency")
parser.add_argument('-split_num', type=int, default=0, help="split number for splitres")
parser.add_argument('-pretrain', default='', type=str, help="load pretrain encoder")