跳转到主要内容

对深度学习的一次清新功能化尝试,兼容您喜欢的库

项目描述

Thinc:对深度学习的清新功能化处理,与您喜欢的库兼容

由spaCy(https://spacy.io)和Prodigy(https://prodi.gy)的制作者开发

Thinc 是一个轻量级的深度学习库,它提供了一个优雅的、类型检查的功能性编程API,用于组合模型,并支持使用 PyTorch、TensorFlow 和 MXNet 等其他框架定义的层。您可以将 Thinc 用作接口层、独立的工具包或以灵活的方式开发新模型。Thinc 的早期版本已经在成千上家公司中默默运行在生产环境中,通过 spaCy 和 Prodigy。我们编写了新版本,以便让用户能够用他们喜欢的框架构建的模型来组合、配置和部署自定义模型

tests Current Release Version PyPi Version conda Version Python wheels Code style: black Open demo in Colab

🔥 特性

  • 类型检查 您的模型定义,并使用自定义类型和 mypy 插件。
  • 包装 PyTorchTensorFlowMXNet 模型以供网络使用。
  • 模型定义的简洁 功能性编程 方法,使用组合而非继承。
  • 可选的通过 运算符重载 的自定义中缀表示法。
  • 集成 配置系统 以描述对象的树和超参数。
  • 可扩展后端的选项。
  • 阅读更多 →

🚀 快速入门

Thinc 与 Python 3.6+ 兼容,并在 LinuxmacOSWindows 上运行。最新的带有二进制轮子的发布版本可通过 pip 获得。在安装 Thinc 和其依赖项之前,请确保您的 pipsetuptoolswheel 都是最新版本。对于最新版本,建议使用 pip 19.3 或更高版本。

pip install -U pip setuptools wheel
pip install thinc

有关不同后端和 GPU 的可选依赖项的详细信息,请参阅 扩展安装文档。您可能还希望 设置静态类型检查 以利用 Thinc 的类型系统。

⚠️ 如果您已安装 PyTorch 并且您正在使用 Python 3.7+,请使用 pip uninstall dataclasses 卸载包 dataclasses,因为它可能已被 PyTorch 安装,并且与 Python 3.7+ 不兼容。

📓 选择性示例和笔记本

请参阅 /examples 目录和 使用文档 以获取更多示例。大多数示例都是 Jupyter 笔记本 - 要在 Google Colab(带有 GPU 支持!)上启动它们,请点击笔记本名称旁边的按钮。

笔记本 描述
intro_to_thinc
Open in Colab
开始所需了解的一切。使用配置文件、注册自定义函数和包装 PyTorch、TensorFlow 和 MXNet 模型,在 MNIST 数据上组合和训练一个模型。
transformers_tagger_bert
Open in Colab
如何使用 Thinc、transformers 和 PyTorch 训练一个词性标注器。从模型定义和配置到训练循环。
pos_tagger_basic_cnn
Open in Colab
在不使用外部依赖项的情况下实现和训练一个基本的 CNN 进行词性标注,并使用 Thinc 的不同级别的配置系统。
parallel_training_ray
Open in Colab
如何使用 Thinc 和 Ray 设置同步和异步参数服务器训练。

查看更多 →

📖 文档和用法指南

文档 描述
简介 您需要了解的一切。
概念与设计 Thinc 的概念模型及其工作方式。
定义和使用模型 如何组合模型和更新状态。
配置系统 Thinc的配置系统和功能注册。
集成PyTorch、TensorFlow & MXNet 与机器学习框架的互操作性
层API 权重层、转换、组合器和包装器。
类型检查 检查模型定义等类型。

🗺 位置在哪里

模块 描述
thinc.api 面向用户的API。 所有类和函数都应从此处导入。
thinc.types 自定义类型和数据类
thinc.model 代码Model类。所有Thinc模型都是Model的一个实例(而不是子类)。
thinc.layers 层。每个层都在自己的模块中实现。
thinc.shims 用于在PyTorch、TensorFlow等外部模型中的接口。
thinc.loss 计算损失函数。
thinc.optimizers 创建优化器的函数。目前支持“vanilla”SGD、Adam和RADAM。
thinc.schedules 不同速率、计划、衰减或系列的生成器。
thinc.backends numpycupy的后端。
thinc.config 配置解析、验证和功能注册系统。
thinc.util 实用程序和辅助函数。

🐍 开发笔记

Thinc使用black进行自动格式化,flake8进行代码检查和mypy进行类型检查。所有代码均与Python 3.6+兼容,尽可能使用类型提示。有关Thinc自定义类型的更多详细信息,请参阅类型参考

👷‍♀️ 从源代码构建Thinc

从源代码构建Thinc需要安装requirements.txt中列出的完整依赖项。您还需要一个编译器来构建C扩展。

git clone https://github.com/explosion/thinc
cd thinc
python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install -r requirements.txt
pip install --no-build-isolation .

或者,以可编辑模式安装

pip install -r requirements.txt
pip install --no-build-isolation --editable .

或通过设置PYTHONPATH

export PYTHONPATH=`pwd`
pip install -r requirements.txt
python setup.py build_ext --inplace

🚦 运行测试

Thinc附带了一个全面的测试套件。以下所有测试都应该通过,不会报告任何警告或错误

python -m pytest thinc    # test suite
python -m mypy thinc      # type checks
python -m flake8 thinc    # linting

要查看测试覆盖率,您可以运行python -m pytest thinc --cov=thinc。我们追求100%的测试覆盖率。这并不意味着我们为每一行代码都精心编写测试——我们忽略了不相关或难以测试的块,并确保测试执行所有代码路径。

项目详细信息


发布历史 发布通知 | RSS源

下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

thinc-9.1.1.tar.gz (191.8 kB 查看哈希值)

上传时间

构建分发

thinc-9.1.1-cp312-cp312-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

thinc-9.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (4.3 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ x86-64

thinc-9.1.1-cp312-cp312-musllinux_1_2_i686.whl (4.3 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ i686

thinc-9.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

thinc-9.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

thinc-9.1.1-cp312-cp312-macosx_11_0_arm64.whl (764.6 kB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

thinc-9.1.1-cp312-cp312-macosx_10_9_x86_64.whl (827.9 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

thinc-9.1.1-cp311-cp311-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

thinc-9.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (4.4 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.2+ x86-64

thinc-9.1.1-cp311-cp311-musllinux_1_2_i686.whl (4.5 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.2+ i686

thinc-9.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

thinc-9.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

thinc-9.1.1-cp311-cp311-macosx_11_0_arm64.whl (781.2 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

thinc-9.1.1-cp311-cp311-macosx_10_9_x86_64.whl (849.9 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

thinc-9.1.1-cp310-cp310-win_amd64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

thinc-9.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

thinc-9.1.1-cp310-cp310-musllinux_1_2_i686.whl (4.3 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ i686

thinc-9.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

thinc-9.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

thinc-9.1.1-cp310-cp310-macosx_11_0_arm64.whl (785.2 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

thinc-9.1.1-cp310-cp310-macosx_10_9_x86_64.whl (853.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

thinc-9.1.1-cp39-cp39-win_amd64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

thinc-9.1.1-cp39-cp39-musllinux_1_2_x86_64.whl (4.3 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ x86-64

thinc-9.1.1-cp39-cp39-musllinux_1_2_i686.whl (4.4 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ i686

thinc-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

thinc-9.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

thinc-9.1.1-cp39-cp39-macosx_11_0_arm64.whl (789.3 kB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

thinc-9.1.1-cp39-cp39-macosx_10_9_x86_64.whl (859.4 kB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ x86-64

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面