[复盘]transformer block的完整流程
输入x,然后做归一化得到x_norm(具体实现是乘一个缩放系数)
对x_norm做三个投影K Q V
做attention softmax计算后得到包含上下文关系的context矩阵
对context做一次投影得到attn_out
最后再接入残差网络,作为attention部分的输出x1。其中x1=x+attn_out
>
接下来就到了FFN的部分,这里普遍采用SwiGLU的结构。
首先对x1做归一化,得到x1_norm。
对x1_norm做两次投影得到a和 b
其中a还需要通过SiLU激活函数,得到a=a*sigmod(a)
然后对a,b进行逐元素乘,得到hidden
最后将hidden投影,得到输出out
到此,一个transformer的层就计算完了,这个out就成为了下一层的输入x
对x_norm做三个投影K Q V
做attention softmax计算后得到包含上下文关系的context矩阵
对context做一次投影得到attn_out
最后再接入残差网络,作为attention部分的输出x1。其中x1=x+attn_out
>
接下来就到了FFN的部分,这里普遍采用SwiGLU的结构。
首先对x1做归一化,得到x1_norm。
对x1_norm做两次投影得到a和 b
其中a还需要通过SiLU激活函数,得到a=a*sigmod(a)
然后对a,b进行逐元素乘,得到hidden
最后将hidden投影,得到输出out
到此,一个transformer的层就计算完了,这个out就成为了下一层的输入x
全部评论
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享