Sampler:
sampler的作用是按照指定的顺序向batch里面读入数据,自定义的sampler可以根据我们的需要返回索引,DataLoader会根据我们返回的索引值提取数据,生成batch
· collate_fn:pytorch规定每一个batch中样本的点数必须相同,所以重写collate_fn方法,将每个batch中样本下采样到相同的数目,这里的函数的下采很简单,就是单纯的取得batch中的最小样本点数,将其他样本中的点shuffle(打乱顺序)之后取前最小个点数。
np.percentile
在python中计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列,只需用np.percentile即可……
nn.Linear
是用于设置网络中的全连接层的
main.py
·类ModelArguments中包含的是关于模型的属性,如model_name,config_name,tokenizer_name等
sys.argv是获取运行python文件的时候命令行参数
imcs_dac.py
·Label Smoothing(标签平滑),常常被用在分类网络中来作为防止过拟合的一种手段,整体方案简单易用,在小数据集上可以取得非常好的效果。
模型优化之Label Smoothing - 知乎 (zhihu.com)
·关于optimizer.param_groups
“param_groups” 是 Pytorch 中优化器 Optimizer 的一个属性,它是一个列表,其中的每个元素都是一个字典,表示优化的参数组。每个字典都包含了一组参数的各种信息,如当前的学习率、动量等。这个属性可以用来获取优化器中当前管理的参数组的信息,也可以用来修改优化器的参数设置。
param_groups中的一些参数介绍:
[‘param’,‘lr’,‘momentum’,‘dampening’,‘weight_decay’,‘nesterov’]
params(iterable)—待优化参数w、b 或者定义了参数组的dict
lr(float,可选)—学习率
momentum(float,可选,默认0)—动量因子
weight_decay(float,可选,默认0)—权重衰减
dampening (float, 可选) – 动量的抑制因子(默认:0)
nesterov (bool, 可选) – 使用Nesterov动量(默认:False)
·
·sys.stdout.write()
只能输出一个字符串str,而print()
可以输出多个值,数据类型多样。
·在深度学习中,logits就是最终的全连接层的输出。通常神经网络中都是先有logits,而后通过sigmoid函数或者softmax函数得到概率 p 的。
train.py
·ModelCheckpoint详解
ModelCheckpoint(filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
period=1)
作用
该回调函数将在每个epoch后保存模型到filepath
参数
filename:字符串,保存模型的路径,filepath可以是格式化的字符串,里面的占位符将会被epoch值和传入on_epoch_end的logs关键字所填入。
例如:
filepath = “weights_{epoch:03d}-{val_loss:.4f}.h5”
则会生成对应epoch和验证集loss的多个文件。
monitor:需要监视的值,通常为:val_acc 或 val_loss 或 acc 或 loss
verbose:信息展示模式,0或1。为1表示输出epoch模型保存信息,默认为0表示不输出该信息,信息形如:
Epoch 00001: val_acc improved from -inf to 0.49240, saving model to /xxx/checkpoint/model_001-0.3902.h5
save_best_only:当设置为True时,将只保存在验证集上性能最好的模型
mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
period:CheckPoint之间的间隔的epoch数