记录一些乱七八糟的pytorch知识

1
nn.Linear(in_features, out_features, bias=True)

创建一个线性变换层(y=Wx+b),输入维度是in_features,输出维度是out_features,bias表示是否使用偏置项,默认为True。

e.g.

1
linear = nn.Linear(10, 5)

创建一个输入维度为10,输出维度为5的线性层。

1
2
3
torch.matmul(A,B)       #matrix multiplication
torch.matmul(a,b) #vector dot product
torch.matmul(A,scalar) #matrix multiply scalar

矩阵乘法,自动选择维度,可以进行向量点积,矩阵乘法,矩阵乘标量。

1
K.transpose(-1, -2)     #transpose last two dimensions

转置K的最后两个维度,-1代表最后一个维度,-2代表倒数第二个维度。
为什么只转置张量K的最后两个维度? K是一个四维张量, 表示(batch_size, num_heads, seq_len, d_k)
只有最后两维是和Q相乘的维度,一个是token数量,一个是token自身词向量的维度。