深度学习中常用包
python
import os
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
import torch.optim as optimizer
超参数设置
2种设置方式:将超参数直接设置在训练的代码中;用yaml、json,dict等文件来存储超参数
python
# 批次的大小
batch_size = 16
# 优化器的学习率
lr = 1e-4
# 训练次数
max_epochs = 100
GPU设置
python
# 方案一:使用os.environ,这种情况如果使用GPU不需要设置
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 指明调用的GPU为0,1号
# 方案二:使用"device",后续对要使用GPU的变量用.to(device)即可
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu") # 指明调用的GPU为1号
使用argparse和yaml文件
- argparse的使用:
python
import argparse
"""
argparse.ArgumentParser()创建了一个对象
add_argument()添加参数
parse_args()将参数封装在opt内,各个参数通过.运算符调用
"""
def main(opt):
print(opt.num_batches)
if __name__ == '__main__':
parse = argparse.ArgumentParser()
parse.add_argument('--num_batches', type=int, default=50, help='the num of batch')
parse.add_argument('--num_window', type=int, default=5, help='the num of window')
parse.add_argument('--weight', type=str, default= '../pretrain.pth', help='the path of pretrained model')
opt = parse.parse_args()
main(opt)
- yaml文件的使用
下面是一个yaml文件的例子,参数呈现层级结构
yaml
device: 'cpu'
data:
train_path: 'data/train'
test_path: 'test/train'
num: 1000
读取yaml文件
python
def read_yaml(path):
"""
read()读入yaml文件中的内容
safe_load()加载yaml格式的内容并转换为字典
"""
file = open(path, 'r', encoding='utf-8')
string = file.read()
file.close()
dict = yaml.safe_load(string)
return dict
path = 'config.yaml'
Dict = read_yaml(path)
device = Dict['device']
print(device)
train_path = Dict['data']['train_path']
print(train_path)
- 使用方法
在yaml文件中给全部参数设置默认值,使用argparse库设置待调参数的值