nfev
: 函数求值次数njev
: Jacobian 评估的数量nit
:算法的迭代次数
permute(dims)#维度转换
torch.split #[按块大小拆分张量]
Pytorch.view
Pytorch中使用view()函数对张量进行重构维度,类似于resize()、reshape()。用法如下:view(参数a,参数b,...),其中总的参数个数表示将张量重构后的维度,如果参数=-1,表示这该维度由pytorch自己补充。
例如 张量a的维度为1*6,a.view(2,3)的维度为2*3,a.view(-1,2,1)的维度为3*2*1
torch.Size
torch.Size括号中有几个数字就是几维
第一层(最外层)中括号里面包含了两个中括号(以逗号进行分割),这就是(2,3,4)中的2
第二层中括号里面包含了三个中括号(以逗号进行分割),这就是(2,3,4)中的3
第三层中括号里面包含了四个数(以逗号进行分割),这就是(2,3,4)中的4
F.softmax
F.softmax作用:
按照行或者列来做归一化的
F.softmax函数语言格式:# 0是对列做归一化,1是对行做归一化 F.softmax(x,dim=1) 或者 F.softmax(x,dim=0)
F.log_softmax作用:
在softmax的结果上再做多一次log运算
F.log_softmax函数语言格式:F.log_softmax(x,dim=1) 或者 F.log_softmax(x,dim=0)
logits
(1)总结来说就是:
f(wx+b)之后的输出,没有归一化的输出值,作为logits。
将logits进行softmax归一化,得到最后的结果。
(2)具体来说是:
也可以这么理解:logits与 softmax都属于在输出层的内容,
logits = tf.matmul(X, W) + bias
再对logits做归一化处理,就用到了softmax:
Y_pred = tf.nn.softmax(logits,name='Y_pred')
——————————————————————
Unscaled log probabilities of shape [d_0, d_1, ..., d_{r-1}, num_classes] and dtype float32 or float64.
可以理解logits ——【batchsize,class_num】是未进入softmax的概率,一般是全连接层的输出,softmax的输入。
CausalLMOutputWithPast
因果语言模型(或自回归)输出的基类
dict 对象
Python 中的 dict 对象是一种 关联式容器 对象,用于保存由 键 ( key )到 值 ( value )的映射关系。 借助关联式容器,程序可快速定位到与指定 键 相关联的 值 。 dict 对象在 Python 程序中使用频率非常高,如果应用不当将严重影响程序的执行效率。
实验参数
run_language_modeling.py
mlm: bool = field(default=False, metadata={"help": "训练mask语言模型而不是语言模型"})
mlm_probability: float = field(default=0.15, metadata={"help": "mask语言模型token的loss速率"})
plm_probability: float = field(default=1 / 6,metadata={"help": "置换语言建模时屏蔽令牌的跨度长度与周围上下文长度的比率。"},)
max_span_length: int = field(default=5, metadata={"help": "用于置换语言建模的屏蔽令牌跨度的最大长度。"})
train_embs: Optional[str] = field(default='no', metadata={"help": "whether the train word embeddings"})max_source_length: Optional[int] = field(default=512, metadata={"help": "the max source length of summarization data. "})train_max_target_length: Optional[int] = field(default=100, metadata={"help": "the max target length for training data. "})val_max_target_length: Optional[int] = field(default=100, metadata={"help": "the max target length for dev data. "})
model.train():
在使用pytorch构建神经网络的时候,训练过程中会在程序上方添加一句model.train(),作用是启用batch normalization和drop out。model.eval():
测试过程中会使用model.eval(),这时神经网络会沿用batch normalization的值,并不使用drop out。
tensor.detach()
从计算图中脱离出来。
假设有模型A和模型B,我们需要将A的输出作为B的输入,但训练时我们只训练模型B. 那么可以这样做:
input_B = output_A.detach()
它可以使两个计算图的梯度传递断开,从而实现我们所需的功能。
返回一个新的tensor,新的tensor和原来的tensor共享数据内存,但不涉及梯度计算,即requires_grad=False。修改其中一个tensor的值,另一个也会改变,因为是共享同一块内存,但如果对其中一个tensor执行某些内置操作,则会报错,例如resize_、resize_as_、set_、transpose_。
torch.mean()
mean()函数的参数:dim=0,按列求平均值,返回的形状是(1,列数);dim=1,按行求平均值,返回的形状是(行数,1),默认不设置dim的时候,返回的是所有元素的平均值。
CrossEntropyLoss()///criterion
对数似然损失函数
torch.pairwise_distance():
计算特征图之间的像素级欧氏距离
- x1:第一个输入的张量
- x2:第二个输入的张量
- p:矩阵范数的维度。默认值是2,即二范数。