变压器编码器的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()

贡献

欢迎任何贡献!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ApachePOI将excel文件导入postgreSQL表   java多线程从iText pdf提取文本   winapi Java和SetWindowDisplayAffinity   eclipse juno的java Websphere 6.1插件   java MPAndroidChart:为Y轴提供一些偏移   java中作为参数传递枚举类型的继承   java Gui jframe的工作原理与netbeans不同   使用Bouncy Castle和PDFBox在Java中验证PDF签名   优化缩小Java代码   java无法在安卓中从Firebase取回子数据   返回的java方法?我应该什么时候用?   java错误处理已完成,退出代码为1。与穿过阵列的for循环有关   多线程Java volatile是否阻止缓存或强制执行写缓存?   java Multi-collectItems如何提前终止并返回已收集的项目   java为什么不在服务(请求,响应)中直接调用processRequest(请求,响应)?   java如何从字符串生成int数组?   打印获取用户输入的值并在其他预选文本中显示。JAVA   未显示java DynamicAsper UTF8字符   java Eclipse RCP:不启动应用程序的命令行参数