变压器编码器的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获取TaskCompletionSource工作(Firestore的Android任务)   从PNG文件获取java或信息   neo4j嵌入式版本2.3.8的java NotInTransactionException   OSGI框架的java Eclipse启动配置在Mac上不起作用   java svn:“预提交”挂钩失败,输出错误:   java中ResourceBundle的io查询   java声明变量的最佳方法是什么?遵循下面的例子?   java如何在log4j中获得不同的记录器?   hibernate错误“java.lang.NoSuchMethodError:org.jboss.logging.Logger.getMessageLogger”   swing将JPanel保存为图像   eclipse(Java Spigot)我的PlayerInteractEvent有问题   使用java nio从FileChannel读取的字符串   java Eclipse无法清理生成输出   安卓对Eclipse java组件中的代码行数有限制吗   java Android Studio将应用程序推到手机上,不会让我   针对具有两个编辑器的页面的selenium java代码自动化   Java正则表达式:负前瞻   JavaJPA:基于实例变量将实体动态映射到表