Transformer 模型中的positional encoding(位置编码)计算理解(2)

 

 

 

 

 

 

 

 以下(以上)内容来自(参考):

https://www.bilibili.com/video/BV1Di4y1c7Zm?p=2&vd_source=6292df769fba3b00eb2ff1859b99d79e

 

 

复制代码
import numpy as np

def getPositionEncoding(seq_len,dim,n=10000):
    ## seq_len: 序列长度
    ## dim 词向量的维度
    ## n 为固定的值
    PE = np.zeros(shape=(seq_len,dim)) ## 为序列的每一个词算一个位置向量 seq_len*dim
    for pos in range(seq_len): ## 为序列的每一个词算一个位置向量
        #print("词的位置为", pos) ## 0,1,2,3.。。
        for i in range(int(dim/2)): ## 每次循环计算两个值,因此,循环次数要减半
            #print("i=",i)
            denominator = np.power(n, 2*i/dim)
            PE[pos,2*i] = np.sin(pos/denominator) #; print("PE[pos,2*i]=",PE[pos,2*i])
            PE[pos,2*i+1] = np.cos(pos/denominator)#; print("PE[pos,2*i+1]=",PE[pos,2*i+1])

    return PE


import matplotlib.pyplot as plt
P = getPositionEncoding(seq_len=100, dim=512, n=10000)
cax = plt.matshow(P)
plt.gcf().colorbar(cax)
plt.show()
复制代码

 

 

复制代码
import numpy as np

def getPositionEncoding(seq_len,dim,n=10000):
    ## seq_len: 序列长度
    ## dim 词向量的维度
    ## n 为固定的值
    PE = np.zeros(shape=(seq_len,dim)) ## 为序列的每一个词算一个位置向量 seq_len*dim
    for pos in range(seq_len): ## 为序列的每一个词算一个位置向量
        #print("词的位置为", pos) ## 0,1,2,3.。。
        for i in range(int(dim/2)): ## 每次循环计算两个值,因此,循环次数要减半
            #print("i=",i)
            denominator = np.power(n, 2*i/dim)
            PE[pos,2*i] = np.sin(pos/denominator) #; print("PE[pos,2*i]=",PE[pos,2*i])
            PE[pos,2*i+1] = np.cos(pos/denominator)#; print("PE[pos,2*i+1]=",PE[pos,2*i+1])

    return PE


import matplotlib.pyplot as plt
P = getPositionEncoding(seq_len=300, dim=512, n=10000)
cax = plt.matshow(P)
plt.gcf().colorbar(cax)
plt.show()
复制代码

 

 

posted @   emanlee  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2010-05-09 WHY YOUR BOSS MAY START SWEATING THE SMALL STTUFF
2008-05-09 SQL Server Error: No Process is on the Other End of the Pipe
点击右上角即可分享
微信分享提示