numpy实现torch和multi-head
torch主要实现的功能,定义了tensor的数据结构。tensor中的加减乘除幂等运算,给添加上了梯度求导的部分,也就是backward反向传播过程。也定义了常用的激活函数ReLU函数,和softmax函数,每个函数也都写了相应的求导过程。相当于是将一些计算过程进行了包装,便于更好的求导运算,也就是神经网络中的后向传播,梯度求导。神经网络中常用的Linear层和LinearNorm也进行了定义。Linear层,其实就是y=w*x+b,把这个公式实现出来就ok了,Norm层也就是直接归一化公式写出来就ok。
多头注意力机制的实现过程,其实不复杂。大的的函数其实就几个,分割注意力头,合并注意力头,注意力分数的计算。注意力头的实现主要是在嵌入层。注意力分数的计算,按照公式就可以很容易写出来。另外,又因为qkv矩阵,都是相似的维度,直接使用Linear层确定维度即可。