变压器编码器的pytorch实现
tfencoder的Python项目详细描述
变压器编码器
该软件包提供了一个易于使用的变压器编码器接口。安装
要求:python(>=3.5)
,pytorch(>=1.0.0)
从pypi安装:
pip install tfencoder
或者从github获取最新版本:
pip install git+https://github.com/guocheng2018/transformer-encoder.git
用法
tfencoder(n_层,d_模型,d_ff,n_头,辍学)
n_layers
:编码器的层数d_model
:每个词向量的维数d_ff
:前馈层的隐藏维度n_heads
:自我关注的脑数dropout
:辍学率,默认为0.1
tfencoder.forward(x,mask)
x (~torch.FloatTensor)
:形状{em1}$(批量大小,最大长度,D U模型)mask (~torch.ByteTensor)
:形状{em1}$(批量大小,最大长度)
示例:
importtorchimporttfencoderencoder=tfencoder.TFEncoder(6,512,2048,8,dropout=0.1)x=torch.randn(64,100,512)# (batch_size, max_seq_len, d_model)mask=torch.randn(64,100).ge(0)# a random maskout=encoder(x,mask)
这个包还提供了嵌入、位置编码和调度优化器,作为额外功能在transformer中使用。
tfembedding(d_model,n_vocab)
d_model
:与tfencoder相同n_vocab
:词汇大小
tfembedding.forward(x)
x (~torch.LongTensor)
:形状{em1}$(批量大小,最大长度)
t位置编码(d_model,dropout,max_len)
d_model
:与tfencoder相同dropout
:辍学率max_len
:最大序列长度
tfpositionalencoding.forward(x)
x (~torch.FloatTensor)
:形状{em1}$(批量大小,最大长度,D U模型)
示例:
importtorchimporttorch.nnasnnfromtfencoder.utilsimportTFEmbedding,TFPositionalEncodingtfembed=TFEmbedding(512,6)tfpe=TFPositionalEncoding(512,0.1,max_len=5)tfinput=nn.Sequential(tfembed,tfpe)x=torch.LongTensor([[1,2,3,4,5],[1,2,3,0,0]])out=tfinput(x)
tfoptimizer(d_model,factor,warmup,优化器)
d_model
:等于tfencoder中的d_模型factor
:学习率的比例因子warmup
:热身步骤optimizer (~torch.optim.Optimzier)
:例如adam optimzier
示例:
importtorch.optimasoptimfromtfencoderimportTFEncoderfromtfencoder.utilsimportTFOptimizerencoder=TFEncoder(6,512,2048,8,dropout=0.1)optimizer=TFOptimizer(512,1,1000,optim.Adam(encoder.parameters(),lr=0))optimizer.zero_grad()loss=...loss.backward()optimizer.step()
贡献
欢迎任何贡献!