NeuronBlocks

模块化 NLP 深度学习建模工具包
授权协议 MIT
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 不详
投 递 者 贺亦
操作系统 跨平台
开源组织 微软
适用人群 未知
 软件概览

NeuronBlocks:像搭积木一样构建自然语言理解深度学习模型

中文教程

概览

NeuronBlocks 是一个模块化 NLP 深度学习建模工具包,可以帮助工程师/研究者们快速构建 NLP 任务的神经网络模型。 该工具包的主要目标是将 NLP 中深度神经网络模型构建的开发成本降到最低,包括训练阶段和推断阶段。

NeuronBlocks 包括 Block Zoo 和 Model Zoo 两个重要组件,其整体框架如下图所示。

  • 在 Block Zoo 中, 我们提供了常用的神经网络组件作为模型架构设计的构建模块。
  • 在 Model Zoo 中, 我们提供了 JSON配置文件 形式的一系列经典 NLP 深度学习模型。

支持的语言

  • English
  • 中文

支持的 NLP 任务

  • 句子分类
  • 情感分析
  • 问答匹配
  • 文本蕴含
  • 序列标注
  • 阅读理解
  • 基于知识蒸馏的模型压缩
  • 更多……

使用方法

用户可以选择 Model Zoo 中的示例模型(JSON 配置文件)开启模型训练,或者利用 Block Zoo 中的神经网络模块构建新的模型,就像玩乐高积木一样。

快速入门

安装

注: NeuronBlocks支持 Python 3.6及以上

  1. Clone本项目:

    git clone https://github.com/Microsoft/NeuronBlocks
  2. 安装Python依赖包:

    pip install -r requirements.txt
  3. 安装PyTorch ( NeuronBlocks支持 PyTorch 0.4.1 及以上):

    对于 Linux ,运行以下命令:

    pip install "torch>=0.4.1"

    对于 Windows ,建议按照PyTorch官方安装教程通过Conda安装PyTorch。

快速开始

通过以下示例快速入门NeuronBlocks。对于Windows,建议使用PowerShell工具运行命令。

提示: 在下文中, PROJECTROOT表示本项目的根目录。

# 训练
cd PROJECT_ROOT
python train.py --conf_path=model_zoo/demo/conf.json

# 测试
python test.py --conf_path=model_zoo/demo/conf.json

# 预测
python predict.py --conf_path=model_zoo/demo/conf.json

更多细节, 请查看Tutorial_zh_CN.md 和 Code documentation

适用人群

使用用神经网络模型解决NLP任务时面临以下挑战的工程师和研究者们:

  • 很多框架可以选择,且框架学习成本高;
  • 繁重的编程工作,大量细节使其难以调试;
  • 快速迭代的模型架构,使工程师们很难完全理解其背后的数学原理;
  • 模型代码优化需要深厚的专业知识;
  • 平台兼容性要求,需要额外的编程工作才能使模型运行在不同的平台上,如Linux/Windows, GPU/CPU。

利用 NeuronBlocks 进行 NLP 神经网络模型训练的优势包括:

  • 模型构建:用户只需要配置简单的 JSON 文件,就能够构建模型和调整参数,大大减少了模型实现的工作量;
  • 模型分享:可以通过分享 JSON 配置文件来分享模型,使模型共享变得非常容易。对于不同的任务或模型,用户只需维护一个通用的源码库;
  • 代码重用:可以在各任务与模型间共享神经网络模块,减少重复的编程工作;
  • 平台灵活性:NeuronBlocks 可以在 Linux 和 Windows 机器上运行,支持 CPU 和 GPU,也支持像 Philly 和 PAI 这样的 GPU 管理平台;
      CPU 预测 Single-GPU 预测 Multi-GPU 预测
    CPU 训练
    Single-GPU 训练
    Multi-GPU 训练
  • 模型可视化:NeuronBlocks 提供了一个模型可视化工具,用于观察模型结构及检查 JSON 配置的正确性
  • 可扩展性:NeuronBlocks 鼓励用户贡献新的神经网络模块或者新的模型。
 相关资料
  • 词向量 自然语言需要数学化才能够被计算机认识和计算。数学化的方法有很多,最简单的方法是为每个词分配一个编号,这种方法已经有多种应用,但是依然存在一个缺点:不能表示词与词的关系。 词向量是这样的一种向量[0.1, -3.31, 83.37, 93.0, -18.37, ……],每一个词对应一个向量,词义相近的词,他们的词向量距离也会越近(欧氏距离、夹角余弦) 词向量有一个优点,就是维度一般较低,一般

  • 本节将讨论优化与深度学习的关系,以及优化在深度学习中的挑战。在一个深度学习问题中,我们通常会预先定义一个损失函数。有了损失函数以后,我们就可以使用优化算法试图将其最小化。在优化中,这样的损失函数通常被称作优化问题的目标函数(objective function)。依据惯例,优化算法通常只考虑最小化目标函数。其实,任何最大化问题都可以很容易地转化为最小化问题,只需令目标函数的相反数为新的目标函数即可

  • 感谢大家的关注,但其实这些笔记远没有那么大的价值;深度学习以及自然语言处理的发展极其迅速,这里的很多内容已经年久失修,甚至很多都没有完成。 相关代码:https://www.wenjiangs.com/wp-content/uploads/2022/08/_codes.zip

  • 译者 bruce1408 作者: Robert Guthrie 本文带您进入pytorch框架进行深度学习编程的核心思想。Pytorch的很多概念(比如计算图抽象和自动求导)并非它所独有的,和其他深度学习框架相关。 我写这篇教程是专门针对那些从未用任何深度学习框架(例如:Tensorflow, Theano, Keras, Dynet)编写代码而从事NLP领域的人。我假设你已经知道NLP领域要解决

  • 主要内容 课程列表 专项课程学习 辅助课程 论文专区 课程列表 课程 机构 参考书 Notes等其他资料 卷积神经网络视觉识别 Stanford 暂无 链接 神经网络 Tweet 暂无 链接 深度学习用于自然语言处理 Stanford 暂无 链接 自然语言处理 Speech and Language Processing 链接 专项课程学习 下述的课程都是公认的最好的在线学习资料,侧重点不同,但推

  • Google Cloud Platform 推出了一个 Learn TensorFlow and deep learning, without a Ph.D. 的教程,介绍了如何基于 Tensorflow 实现 CNN 和 RNN,链接在 这里。 Youtube Slide1 Slide2 Sample Code

  • 本文向大家介绍python模块smtplib学习,包括了python模块smtplib学习的使用技巧和注意事项,需要的朋友参考一下 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 smtp协议的基本命令包括:     HELO 向服务器标识用户身份     MAIL 初始化邮件传输 mail from:     RCPT 标识单个的邮件接收人;常

  • 在 Node.js 模块库中有很多好用的模块。接下来我们为大家介绍几种常用模块的使用: 序号 模块名 & 描述 1 OS 模块 提供基本的系统操作函数。 2 Path 模块 提供了处理和转换文件路径的工具。 3 Net 模块 用于底层的网络通信。提供了服务端和客户端的的操作。 4 DNS 模块 用于解析域名。 5 Domain 模块 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的