texar:基于 TensorFlow/PyTorch 的机器学习与自然语言处理工具包项目

Toolkit for Machine Learning, Natural Language Processing, and Text Generation, in TensorFlow. This is part of the CASL project: http://casl-project.ai/

分支3Tags6
当前项目代码仓暂无内容

概览

Texar 是一个旨在支持广泛机器学习任务的工具包,特别是在自然语言处理和文本生成领域。它提供了易于使用的机器学习模块与功能,让组合任意模型和算法变得简单。该工具面向研究者和实践者设计,便于快速原型设计和实验。

Texar 最初由 Petuum卡耐基梅隆大学(CMU) 开发,并与其他机构合作积极贡献。其镜像仓库由 Petuum 开源维护。

关键特性

  • 双版本,相似接口:Texar-TensorFlow(本仓库)和 Texar-PyTorch 接口基本一致,两者融合了 TensorFlow 和 PyTorch 的最佳设计:
    • 遵循 PyTorch约定 的接口和变量共享。
    • 结合了 TensorFlow约定 的优良因子分解与丰富功能。
  • 丰富的预训练模型,统一接口下的广泛应用:BERT、GPT2、XLNet 等,用于编码、分类、生成以及与其他Texar组件组成复杂模型!
  • 多层高度定制化,对新手友好同时也满足专家需求:
    • 完全兼容原生的 TF/PyTorch API,自由接入外部模块。
  • 适应性强,覆盖广泛的任务、模型、算法、数据处理和评估等方面。
  • 模块化以实现最大化重用和清晰的API,基于“学习-推理-模型架构”的原则分解。
  • 分布式支持多GPU下的模型训练。
  • 提供详细的文档和丰富的示例


库API示例

构建带有最大似然学习的编码器-解码器模型:

import texar.tf as tx

# 数据准备
data = tx.data.PairedTextData(hparams=hparams_data)
iterator = tx.data.DataIterator(data)
batch = iterator.get_next()

# 模型架构
embedder = tx.modules.WordEmbedder(data.target_vocab.size, hparams=hparams_emb)
encoder = tx.modules.TransformerEncoder(hparams=hparams_enc)
outputs_enc = encoder(inputs=embedder(batch['source_text_ids']))
decoder = tx.modules.TransformerDecoder(output_layer=tf.transpose(embedder.embedding))
outputs, _, _ = decoder(memory=outputs_enc, 
                        memory_sequence_length=batch['source_length'],
                        inputs=embedder(batch['target_text_ids']),
                        sequence_length=batch['target_length']-1,
                        decoding_strategy='greedy_train')

# 计算最大似然损失
loss = tx.losses.sequence_sparse_softmax_cross_entropy(
    labels=batch['target_text_ids'][:, 1:],
    logits=outputs.logits,
    sequence_length=batch['target_length']-1)

相同模型,采用对抗学习:

helper = tx.modules.GumbelSoftmaxTrainingHelper(start_tokens=[BOS]*batch_size, embedding=embedder)
outputs, _ = decoder(helper=helper)

discriminator = tx.modules.BertClassifier(hparams=hparams_bert)
G_loss, D_loss = tx.losses.binary_adversarial_losses(real_data=batch['target_text_ids'][:, 1:], 
                                                     fake_data=outputs.sample_id, 
                                                     discriminator_fn=discriminator)

使用强化学习(策略梯度方法)的同一模型:

agent = tx.agents.SeqPGAgent(samples=outputs.sample_id, logits=outputs.logits, 
                             sequence_length=batch['target_length']-1, hparams=config_model.agent)

更多示例请见 这里

安装

注意:Texar>0.2.3需要Python 3.6或3.7。要使用较旧的Python版本,请安装Texar<=0.2.3

Texar要求:

  • tensorflow >= 1.10.0< 2.0.0
  • tensorflow_probability >= 0.3.0< 0.8.0

安装好tensorflowtensorflow_probability后,通过PyPI安装Texar:

pip install texar

若要使用最新功能或本地开发,则从源代码安装:

git clone https://github.com/asyml/texar.git
cd texar
pip install .

入门

引用

如果您使用了Texar,请引用以下技术报告的BibTeX条目

@inproceedings{hu2019texar,
  title={Texar: A Modularized, Versatile, and Extensible Toolkit for Text Generation},
  author={Hu, Zhiting and others},
  booktitle={ACL 2019, System Demonstrations},
  year={2019}
}

许可证

Apache License 2.0

支持Texar的企业和大学

                  

项目介绍

TensorFlow 中的机器学习、自然语言处理与文本生成工具包。这是 CASL 项目的一部分:http://casl-project.ai/【此简介由AI生成】

定制我的领域
742.39 K368访问 GitHub