深度学习实验常用代码块

1、argparse 库

用来保存命令行参数,主要分为三个步骤:

  • 1、创建解析器
  • 2、添加参数
  • 3、解析参数
import argparse

# 创建解析器
parser = argparse.ArgumentParser(description='train args')
# 添加参数
parser.add_argument('--cfg_file', type=str, default=None, help='specify the config for training')
parser.add_argument('--batch_size', type=int, default=None, required=False, help='batch size for training')
parser.add_argument('--workers', type=int, default=4, help='number of workers for dataloader')
arser.add_argument('--save_to_file', action='store_true', default=False, help='')
parser.add_argument('--set', dest='set_cfgs', default=None, nargs=argparse.REMAINDER,
                        help='set extra config keys if needed')
"""
type: 输入参数转为xx类型
default:默认参数值
action:命令行无该参数时,默认为False,否则为True
help:提示信息
required:可选参数是否可以省略
nargs:读取的命令行参数个数
"""

# 解析参数
args = parser.parse_args()
print(args.cfg_file)
...

2、EasyDict 库

可以直接使用.来访问字典的键值对。

>>> from easydict import EasyDict

>>> d = EasyDict({'foo':3, 'bar':{'x':1, 'y':2}})
>>> d.foo
3
>>> d.bar.x
1 
 
>>> from easydict import EasyDict
>>> from simplejson import loads
>>> j = """{
"Buffer": 12,
"List1": [
    {"type" : "point", "coordinates" : [100.1,54.9] },
    {"type" : "point", "coordinates" : [109.4,65.1] },
    {"type" : "point", "coordinates" : [115.2,80.2] },
    {"type" : "point", "coordinates" : [150.9,97.8] }
]
}"""
>>> d = EasyDict(loads(j))
>>> d.Buffer
12
>>> d.List1[0].coordinates[1]
54.9

3、pathlib 库

不同操作系统兼容性更好

>>> from pathlib import Path

# 获取当前文件路径 .resolve()转为绝对路径
>>> Path(__file__).resolve()
/home/drl/xxx/xxx.py

# .parent相当于 cd .. 到父级路径
>>> Path(__file__).resolve().parent
/home/drl/xxx

# 使用 / 拼接路径
>>> (Path(__file__).resolve().parent / '../').resolve()
/home/drl

# 除去文件后缀
>>> Path(__file__).stem
xxx

一个经典的写法

from pathlib import Path
load_path = '~/'
str(path) for path in sorted(Path(load_path).expanduser().iterdir()) if path.suffix == '.db'
# .expanduser()展开目录
# .iterdir()获取当前文件夹下所有文件及文件夹(列表形式返回)

4、glob 库

主要是使用正则来匹配查找符合要求的文件路径。

import glob

# 查找所有的权重文件
ckpt_list = glob.glob(str(ckpt_dir / '*.pth'))

5、logging 库

记录模型日志信息

import logging

# 创建一个logger
logger = logging.getLogger('mylogger')
# 设置日志等级
logger.setLevel(logging.INFO)  
# 定义handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')


"""
将日志信息写入控制台
"""
console = logging.StreamHandler()
console.setLevel(logging.ERROR)
console.setFormatter(formatter)  # 定义输出格式
logger.addHandler(console)  # 给logger添加handler


"""
将日志信息写入文件
"""
file_handler = logging.FileHandler(filename=log_file)
file_handler.setLevel(logging.ERROR)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

# 取消传播
logger.propagate = False

# 使用(写入日志记录)
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

6、vars()函数

以字典形式返回对象的属性和属性值。

>>> class Runoob:
...     a = 1
... 
>>> print(vars(Runoob))
{'a': 1, '__module__': '__main__', '__doc__': None}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值