PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序,它主要由 Facebook 的人工智能研究小组开发。PyTorch 提供两个高级功能:(1) 具有强大的 GPU 加速的张量计算(如 NumPy);(2) 包含自动求导系统的深度神经网络。更多介绍详见官方网址:https://pytorch.org,也可以直接搜索 github 开源的:PyTorch 中文手册 (pytorch handbook)。
1.设置网络参数
首先介绍Python的argparse模块(python的标准库都可以在Pyhton官网上查到),是python用于解析命令行参数和选项的标准模块,作用就是为py文件封装好可以选择的参数,使他们更加灵活、丰富。使用步骤:
import argparse #导入模块
parser = argparse.ArgumentParser() #创建一个解析对象,一般只需要传入description参数
parser.add_argument() #添加需要关注的参数或者选项
#parser.add_argument('--input_dir', default='', type=str, help='input direction')
#字符串等命令行参数名,default未传参时的默认值,type参数类型(默认字符串str,还有float/int等类型),help运行参数不正确会打印描述信息。
args = parse_args() #进行解析
args.dataset #进行使用
在机器学习领域,很多模型需要设置超参数,然而当超参数过多时,就会出现不方便管理的问题。为了提高代码的重用性,不用经常去修改代码内部,可以将所有的代码都变成模块化和可配置化。其中,yacs(Yet Another Configuration System)是Ross Girshick(Faster-RCNN的作者)创建的一个轻量级第三方库,用于定义和管理系统配置,这些“配置”通常包括用于训练机器学习模型的超参数或可配置模型超参数(如卷积神经网络的深度等概念)。有点类似于argparse,不过argparse需要在运行文件中写一堆parser.add_argument(),且运行时需要在命令行传入参数,而yacs写好之后就可以放到文档中, 非常清晰且方便管理。YACS的使用方法是,首先要创建一个项目配置文件,通常称为config.py或default.py,它应该为所有选项提供合理的默认值;然后创建YAML配置文件,最好为每个实验做一个,并且每个配置文件仅覆盖该实验中正在更改的选项。
# config.py
from yacs.config import CfgNode as CN
# ---------------------------------------------- #
# system options
_C = CN()
_C.SYSTEM = CN()
# Number of GPUS to use in the experiment
_C.SYSTEM.NUM_GPUS = 8
# Number of workers for doing things
_C.SYSTEM.NUM_WORKERS = 4
# ---------------------------------------------- #
# Training options
_C.TRAIN = CN()
__C.TRAIN.EPOCH = 20
__C.