[复盘]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
全部评论
相关推荐
点赞 评论 收藏
分享
10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧 点赞 评论 收藏
分享
12-02 23:29
山东师范大学 C++ 点赞 评论 收藏
分享
