pytorch中的序列到序列框架

nmtpytorch的Python项目详细描述


<<<<<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< http://www.python.org/downloads/release/python-360/"relrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrel="nofollow"><<<<<

单击此处的加入我们的Slack频道以获取问题。

nmtpytorch允许训练各种端到端的神经结构,包括 但不限于神经机器翻译、图像字幕和自动。 语音识别系统。初始代码库位于theano中,并且 灵感来源于著名的dl4mt-tutorial 代码库。

nmtpytorch主要由勒芒大学的语言和语音团队开发 接受来自接地序列到序列转换团队的宝贵贡献 弗雷德里克·杰利内克纪念夏令营2018

Loic Barrault、Ozan Caglayan、Amanda Duarte、Desmond Elliott、Spandana Gella、Nils Holzenberger, 希拉格拉(Chirag Lala)、茉莉(Jasmine(Sun Jae)Lee)、亨利·列博维奇(Henry Lebovich)、普拉纳瓦中央教堂(Pranava Madhyastha) Florian Metze、Karl Mulligan、Alissa Ostapenko、Shruti Palaskar、Ramon Sanabria、Lucia Special和Josiah Wang。

如果您使用的是nmtpytorch,您可能需要引用以下纸张: 啊!

安装

nmtpytorch当前需要python>;=3.6torch>;=0.4.1。 我们不打算支持Python2.x。

重要信息:安装nmtpytorch后,您需要运行nmtpy-install-extra 将Meteor相关文件下载到${home}/.nmtpy文件夹中。 此步骤只需要一次。

您可以使用pip(或pip3)从pypi安装nmtpytorch 操作系统和环境):

啊!

这也将自动获取和安装依赖项。对于手电筒 依赖项它将专门安装torch 1.0.0来自pypi的包 将CUDA 9.0运送到内部。

德克萨斯州

我们在存储库中提供了一个environment.yml文件,您可以使用它来创建 一个随时可用的蟒蛇环境,用于nmtpytorch

啊!

开发模式

对于持续的开发和测试,运行python setup.py develop就足够了 在git签出的根文件夹中。从现在起,对源代码的所有修改 树是直接考虑的任务,无需重新安装。

文档

我们目前仅在wiki中提供一些初步文档

发行说明

此版本支持pytorch>;=0.4.1,包括最新的1.0版本。相关的 setup.pyenvironment.yml文件将默认为1.0.0安装。

V4.0.0(2018年12月18日)

  • criticalnumpydataset现在返回形状的张量,对于3d/4d卷积特征,返回hxw,n,c,对于2d特征文件,返回1,n,c。应调整型号以适应这种新的形状。
  • 可以从配置中给出每个拆分的顺序文件ord:path/to/txt file with integer per line)来更改numpy张量的特征顺序,以便灵活地还原、无序化、平铺等。
  • 更好的尺寸检查,确保一切正常。
  • 添加了labeldataset用于单标签输入/输出,以及相关的词汇表用于整数映射。
  • 添加了handle_oom=(true false)参数,用于[train]部分,以便在训练期间从GPU内存不足(oom)错误中恢复。这在默认情况下是禁用的,您需要从实验配置文件中启用它。注意,在验证复杂度计算期间仍然可以获得oom。如果您点击该键,请减小eval_batch_size参数。
  • 添加了de hyphen后处理过滤器,以便在早期停止评估期间缝合摩西的严重连字符分裂。
  • 添加了可选的投影层和层规范化到textencoder
  • nmt中添加了enc\u lnorm、sched\u sampling选项,以便为编码器启用层规范化,并以给定的概率使用定时采样
  • conditionaldecoder现在可以使用最大池编码器状态或最后一个状态进行初始化。
  • 现在,您可以通过更改dec_variant选项来尝试使用nmt的不同解码器。
  • 在解码器的字典中收集所有注意力权重。
  • 用参数-nn-best输出添加到nmtpy translate
  • 改变了-s用于nmtpy translate的方式。现在,您需要始终使用-s指定拆分名称,但-s用于覆盖配置文件中为该拆分定义的输入数据源。
  • 删除解码器初始化的多模态nmtmnmtdecinit。在nmt模型中,通过使用model选项dec\u init=feats
  • 支持编码器初始化、解码器初始化、二者兼备、嵌入与可视特性的连接、前置与追加的新型多模态nmt:。这个模型几乎涵盖了所有来自lium-cvc的wmt17多模式系统的模型,除了乘法交互变量,如trgmul
  • 新型多通道放大器:编码器-解码器初始化ASR模型。参见论文
  • 新型号的注意字幕:与Show Attentive and Tell相似,但不是精确复制,它使用功能文件而不是原始图像。
  • 新型注意事项功能fa:lium-cvc的wmt18多模式系统即过滤注意
  • 新(实验性)模型NLI:一个简单的基于LSTM的NLI基线,用于SNLI数据集:
    • 方向应定义为方向:pre:text,hyp:text->;lb:label
    • pre、hyplb键指向每行一个句子的纯文本文件。即使标签符合NMTPY体系结构,也应构建词汇表。
    • accshou将添加到eval_metrics以计算精度。

v3.0.0(2018年10月5日)

主要版本支持pytorch 0.4并放弃对0.3的支持

由于设备更简单,现在支持在CPU上进行培训和测试 pytorch 0.4的语义:只需将-d cpu设置为nmtpy即可切换到cpu模式。 注意:对CPU的培训只适用于调试,否则很慢。

  • 注意:设备id不再是配置选项。它应该被移除 从您的旧配置。
  • 不支持多GPU。始终限制使用单个GPU cuda_visible_设备环境变量。

现在可以覆盖用于在 推论:示例:nmtpy translate(…)-x model.att_temp:0.9

nmtpy train现在检测到无效/旧的[train]选项并拒绝 训练模型。

新采样器:近似bucketbatchsampler 类似于默认的bucketbatchsampler,但对于稀疏的 分布的序列长度,如在语音识别中。长度相似 项目到存储桶。它不再保证批次完全 由相同长度的序列组成,因此在编码器中必须小心 支持包装/衬垫/遮蔽。textEncoder已自动执行此操作 而语音编码器bilstmp则不在乎。

实验性:您可以使用近似采样器解码ASR系统 尽管模型没有考虑填充位置(警告 将在每批印刷)。 对于我们尝试的特定数据集,损失是0.2%的WER。所以尽管计算 在编码器变得嘈杂和不完全正确的情况下,模型可以处理 噪音很大:

$nmtpy translate-s val-o hyp-x model.sampler_type:近似最佳值。ckpt

这种类型的批处理几乎将asr解码时间减少了2-3倍。

其他更改

  • nmtpy build vocab生成的词汇现在包含频率 信息也是。代码与旧的vocab文件向后兼容。
  • 批处理对象现在应显式移动到分配的设备 使用.device()方法。参见mainloop.pytest_performance()from nmt型号。
  • 训练不再显示来自nvidia smi输出的缓存gpu分配 最后,周期性地调用nvidia smi是一件棘手的事情。我们 计划使用torch.cuda.*来估算内存消耗。
  • 注意:多进程数据加载被暂时禁用 时不时地崩溃,因此num_workers>;0不起作用 在此版本中。
  • 注意分为dotAttentionmlPattention和 提供便利功能get_attention()在它们之间进行选择 在模型构建期间。
  • get_activation_fn()应用于在非线性项之间进行选择 动态地而不是执行getattr(nn.functional,activ)。后者 在下一个Pythorch版本中,对TanhSigmoid不起作用。
  • 简化:asr模型现在从nmt

v2.0.0(2018年9月26日)

  • 能够通过pip进行安装
  • 高级层现在被组织到子文件夹中。
  • 新的基本层:序列卷积,最大边缘。
  • 新的注意层次:共同注意、多头注意、分层注意。
  • 新编码器:任意序列矢量编码器,bilstmp语音特征编码R.
  • 新解码器:多源解码器、交换解码器、矢量解码器。
  • 新数据集:kaldi数据集(.ark/.scp reader)、shelve数据集、numpy序列数据集。
  • 增加了学习率退火:参见config.py中的lr_decay*选项
  • 已从存储库中删除子单词nmt和meteor文件。我们现在依赖 子字nmt的pip包。对于Meteor,nmtpy install extra应该 安装后启动。
  • 更多的多任务和多输入/多输出翻译培训制度。
  • 新的早期停止指标:字符和单词错误率(cer,wer)和胭脂(胭脂)。
  • BucketBatchSampler的课程学习选项,即订购批次的长度。
  • 新型号:
    • ASR:听-听-听-读-拼-像自动语音识别
    • 多任务*:多个输入/输出之间的实验性多任务调度。

v1.4.0(2018年5月9日)

  • 添加environment.yml,以便使用conda轻松安装。现在你可以 通过调用conda env create-f environment.yml,创建一个随时可用的conda环境。
  • 保持float16数组不变,使numpydataset内存高效 直到批量创建时间。
  • multi30krawdataset重命名为multi30kdataset它现在同时支持 原始图像文件和预提取的视觉特征文件存储为.npy
  • scripts/下添加cnn特征提取脚本
  • 将双随机注意添加到showatendandtell和多模态nmt。
  • 新型号mnmtdecinit用辅助功能初始化解码器。
  • 新型号amnmtfeatures是关注的mmt,但带有功能文件 而不是端到端的功能提取,这需要大量的内存。

v1.3.2(2018年5月2日)

  • 更新到showatendandtell型号。

v1.3.1(2018年5月1日)

  • 删除了旧的multi30kdataset
  • 按源序列长度而不是目标对批排序。
  • 修正了showatendandtell模型。现在应该可以了。

v1.3(2018年4月30日)

  • 添加了multi30krawdataset用于从原始图像作为输入来训练端到端系统。
  • 添加了numpydataset以读取.npy/.npztensor文件作为输入特性。
  • 现在您可以将-s传递到nmtpy train以生成文件名中没有所有超参数的较短实验文件。
  • 新的后处理过滤器选项de spm用于google sentencepiece(spm)处理的文件。
  • sacrebleu现在是一个依赖项,因为它现在被接受为一个早期停止度量。 在spm处理过的文件中使用它是有意义的,因为它们是被取消标记的。 一经后处理。
  • 添加了sklearn作为某些度量的依赖项。
  • 在SGD的[train]部分添加了动量和nesterov参数。
  • imageencoder层在许多方面得到了改进。有关详细信息,请参见代码。
  • 添加了未合并的上游pr以获得moduledit()支持。
  • meteor如果无法从文件后缀中检测到语言,则现在将退回到英语。
  • -f现在使用nmtpy build vocab生成词汇表文件时,为标记频率生成一个单独的numpy文件。
  • 为非波束搜索推断模式添加了新的命令nmtpy test
  • 删除了nmtpy resume命令,并添加了pretrained_file选项以从检查点初始化模型权重。
  • [train]添加了freeze_layers选项,以提供要冻结的层名称前缀的逗号分隔列表。
  • 改进播种:现在打印种子以重现结果。
  • 增加了iPython笔记本,可使注意力可视化。
    • 新的浅层simplegradecoder层。
    • textencoder:能够设置嵌入的maxnormgradscale并使用或不使用排序长度批处理。
    • conditionaldecoder:使其与GRU/LSTM一起工作,允许为嵌入设置maxnorm/gradscale
    • conditionalmdecoder:同上。
  • NMTPY翻译
    • --暂时避免使用double--避免使用unk删除。
    • 增加了谷歌的长度惩罚标准化开关--lp alpha
    • 添加了Ensembling,如果您提供超过1个模型检查点,则会自动启用该功能。
  • utils/ml_metrics.py中的新机器学习度量包装:
    • 标签排名平均精度lrap
    • 覆盖率错误
    • 平均倒数秩

v1.2(2018年2月20日)

  • 现在您可以在配置文件中使用$home$user
  • 修正了一个溢出错误,该错误会导致超过255个令牌的NMT失败。
  • Meteor Worker进程现在在验证后正确终止。
  • 一个实验的许多运行现在都以一个唯一的随机字符串而不是增量整数作为后缀,以避免集群设置中的竞争条件。
  • utils.nn.get_network_topology()替换为一个新的topology类
  • 如果设置了cuda_visible_设备,则gpumanager将始终遵守该设置。
  • 已放弃在/tmp下为GPU保留创建临时/顾问锁文件。
  • 培训期间的时间测量现在被分解为批处理开销、培训和评估计时。
  • 数据集
    • 添加了用于独立文本文件读取的textdataset
    • 添加了onehotdataset,这是textdataset的一个变体,其中序列没有分别以<;bos>;<;eos>;作为前缀/后缀。
    • 添加了实验性的多并行数据集,它将任意数量的并行数据集合并在一起。
  • NMTPY翻译
    • .nodbl.nounk后缀现在分别添加到输出文件中的--avoid double--avoid unk参数。
    • 一个与模型无关的beam_search()现在被分离到它自己的文件nmtpytorch/search.py
    • 最大长度默认值增加到200。

v1.1(2018年1月25日)

  • 新的实验性multi30kdatasetimagefolderdataset
  • TorchVision为CNN支持添加了依赖项
  • nmtpy coco metrics现在计算一个流星而不计算norm=true
  • 主循环机制完全重构,向后不兼容 [train]部分的配置选项更改:
    • 耐心增量选项被删除
    • 添加了评估批处理大小以定义训练期间GPU波束搜索的批处理大小
    • eval_freq默认值现在是3000这意味着per3000小批量
    • 评估指标现在默认为损失。和以前一样,您可以提供一个列表 如bleu,meteor,loss计算所有这些并提前停止 基于第一个
    • 添加了eval_zero(默认值:false)以指示计算模型 在训练开始前设置一次dev。有益于理智 检查是否微调使用预先训练的权重初始化的模型
    • 删除了:我们不再在开发集上保存最好的模型 W.R.T.早停指标
    • 添加了将保存最佳模型的save_best_metrics(默认值:true) 在dev set w.r.t上,eval_metrics中提供的每个度量。这种类型的 补救删除save_best_n
    • checkpoint_freq现在默认为5000这意味着per5000 小批量。
    • 添加了n_检查点(默认值:5)以定义最后一个检查点的数量 如果检查点频率为0,则将保留检查点,即检查点已启用
  • 添加了对配置文件的支持:
    • 现在可以在.conf文件中定义中间变量以避免 一遍又一遍地输入相同的路径。可以引用变量 在其部分中使用tensorboard目录:${save_path}/tb符号 也可以使用横截面引用:${data:root}将被替换 通过[数据]部分中定义的根变量的值。
  • -p/--pretrained添加到nmtpy train以初始化 使用另一个检查点的模型.ckpt
  • 改进了对nmtpy translate的输入/输出处理:
    • -s接受配置中定义的以逗号分隔的测试集 立即翻译实验文件。示例:-s val、newstest2016、newstest2017
    • -s的互斥对应项是-s,它接收 源语句的单个输入文件。
    • 对于这两种情况,输出前缀现在应该与-o一起提供。 在多个测试集的情况下,将附加输出前缀 测试集的名称和光束大小。如果只提供一个包含-s的文件 最终输出名称将只反映光束大小信息。
  • nmtpy build vocab的两个新参数:
    • -f:将频率计数也存储在finaljson词汇表中
    • -x:不在词汇表中添加特殊标记<;eos>;、<;bos>;、<;unk>;、<;pad>;

层/架构
  • fusion()层添加到concat、sum、mul任意数量的输入
  • 添加了实验层imageencoder()以无缝插入vgg或resnet CNN使用TorchVision预训练模型
  • 注意层参数改进。现在可以选择瓶颈 带有att_瓶颈的mlp注意的维度 注意仍未测试并且可能已损坏。

新层/架构:

  • 添加了实现特定于模态的多模态注意的"注意"mt 从HARFF="HTTPS://ARXV.OR/ABS/1609039 76"Re="NofOLLLO">神经机器翻译的多模态注意
  • 增加了showatendandtell模型

nmt的变化

  • dec_init默认为mean_ctx,即解码器将被初始化 从源编码器计算的平均上下文
  • enc_lnorm这只是一个占位符现在是rem因为我们没有 目前已提供层规范化
  • 光束搜索完全移动到GPU

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

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型