1.glob模块
1).glob.glob(pathname)返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径.
2.argparse模块
参考:https://www.jianshu.com/p/ea52fdfaa4ad
1).argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。
2).ArgumentParser(prog=None, usage=None,description=None, epilog=None, parents=[],formatter_class=argparse.HelpFormatter, prefix_chars='-',fromfile_prefix_chars=None, argument_default=None,conflict_handler='error', add_help=True)
prog:程序的名字,默认为sys.argv[0],用来在help信息中描述程序的名称。
usage:描述程序用途的字符串
description:help信息前的文字。
epilog:help信息之后的信息
add_help:设为False时,help信息里面不再显示-h --help信息。
prefix_chars:参数前缀,默认为'-'
fromfile_prefix_chars:前缀字符,放在文件名之前
argument_default:参数的全局默认值。
conflict_handler:对冲突的处理方式,默认为返回错误“error”。还有“resolve”,智能解决冲突。当用户给程序添加了两个一样的命令参数时,“error”就直接报错,提醒用户。而“resolve”则会去掉第一次出现的命令参数重复的部分或者全部(可能是短命令冲突或者全都冲突).
3).add_argument()方法,用来指定程序需要接受的命令参数
add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
name or flags:参数有两种,可选参数和位置参数。parse_args()运行时,会用'-'来认证可选参数,剩下的即为位置参数。定位参数必选,可选参数可选。
**添加可选参数:parser.add_argument('-f', '--foo')(用到)
添加位置参数:parser.add_argument('bar')
action:参数动作
argparse内置6种动作可以在解析到一个参数时进行触发:
store 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。
store_const 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。
store_ture/store_false 保存相应的布尔值,这两个动作被用于实现布尔开关。
append 将值保存到一个列表中。若参数重复出现,则保存多个值。
append_const 将一个定义在参数规格中的值保存到一个列表中。
version 打印关于程序的版本信息,然后退出
nargs:参数的数量
值可以为整数N(N个),*(任意多个),+(一个或更多)
值为?时,首先从命令行获得参数,若没有则从const获得,然后从default获得:
dest:参数值就保存为parse_args()返回的命名空间对象中名为该 dest 参数值的一个属性。
如果提供dest,例如dest="a",那么可以通过args.a访问该参数
default:设置参数的默认值
type:把从命令行输入的结果转成设置的类型
choice:允许的参数值
*required:是否必选(用到)
desk:可作为参数名
*help:参数命令的介绍(用到)
4),argparse使用详解
1)-引入模块
import argparse
2)-建立解析对象
parser = argparse.ArgumentParser()
3)-增加属性:给xx实例增加一个aa属性 # xx.add_argument(“aa”)
parser.add_argument(“echo”)
4)-属性给与args实例: 把parser中设置的所有"add_argument"给返回到args子类实例当中 , 那么parser中增加的属性内容都会在args实例中,使用即可。
args = parser.parse_args()
4.torchvision,该包主要由3个子包组成
分别是:torchvision.datasets、torchvision.models、torchvision.transforms
torchvision介绍具体参考:https://blog.csdn.net/Hansry/article/details/84071316
这里只介绍用到的方法及参数
1).torchvision.transforms.Normalize(mean,std):用均值和标准差对张量图像进行标准化处理,给定n通道的均值(M1, … , Mn) 和标准差(S1, … ,Sn), 这个变化将会归一化根据均值和标准差归一化每个通道值。例如,input[channel] = (input[channel]-mean[channel])/std(channel)
2).torchvision.transforms.ToTensor()将PIL图片或者numpy.ndarray转成Tensor类型的
5.numpy
1).np.transpose()二维矩阵的transpose函数.
简单来说,就相当于数学中的转置,在矩阵中,转置就是把行与列相互调换位置;
例如 初始(0,1,2), 则 (1,2,0)表示X,Y,Z轴都发生了变化
参考:https://www.cnblogs.com/caizhou520/p/11227986.html
2).np.array和np.asarray都可以将结构数据转化为ndarray
但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。
3).np.mean()求均值,
4).np.log10()返回以10为底的输入数组的对数,按元素排序
6.sigmoid().cpu().item()
sigmoid.cpu(),将激活函数放到cpu上,item()是求值
7.from sklearn.metrics import average_precision_score, accuracy_score
sklearn.metrics:包含各种评价指标
accuracy_score:精度
average_precision_score:根据预测得分计算平均精度(AP)
8.torch.cuda.is_available() and gpu_id != -1:
判断是否存在GPU,是否存在id
device = 'cuda:{}'.format(gpu_id)#存在GPU,device:设备名称
9. with torch.no_grad():
是一个上下文管理器,被该语句 wrap 起来的部分将不会track 梯度,因为模型在训练阶段具有 requires_grad = True 的可训练参数有利于调参,但在评估阶段我们不需要梯度
10.
state_dict = torch.load(model_path, map_location='cpu')#map_location – 函数、torch.device或者字典指明如何重新映射存储位置。这里是cpu
model.load_state_dict(state_dict['model'])#load_state_dict 是model或optimizer之后pytorch自动具备的函数,可以直接调用,使用反序列化状态字典加载model’s参数字典
model.to(device)将模型加载到指定设备上,device=torch.device("cpu")代表的使用cpu,而device=torch.device("cuda")则代表的使用GPU
model.device = device
model.eval()测试实例化model,框架自动把BN和DropOut固定住,不会取平均,而是用训练好的值
参考:https://blog.csdn.net/weixin_40522801/article/details/106563354
11.PSNR,峰值噪声比,是一种衡量图像质量的指标.是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值
PSNR公式