{"id":13493542,"url":"https://github.com/explosion/thinc","last_synced_at":"2026-04-01T21:25:57.210Z","repository":{"id":21986409,"uuid":"25311354","full_name":"explosion/thinc","owner":"explosion","description":"🔮 A refreshing functional take on deep learning, compatible with your favorite libraries","archived":false,"fork":false,"pushed_at":"2026-03-20T09:35:21.000Z","size":11082,"stargazers_count":2892,"open_issues_count":24,"forks_count":294,"subscribers_count":75,"default_branch":"v8.3.x","last_synced_at":"2026-03-21T01:41:05.748Z","etag":null,"topics":["ai","artificial-intelligence","deep-learning","functional-programming","jax","machine-learning","machine-learning-library","mxnet","natural-language-processing","nlp","python","pytorch","spacy","tensorflow","type-checking"],"latest_commit_sha":null,"homepage":"https://thinc.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"mceachen/exiftool.rb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/explosion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-10-16T16:34:59.000Z","updated_at":"2026-03-20T09:35:24.000Z","dependencies_parsed_at":"2024-06-03T12:38:57.763Z","dependency_job_id":"33be25a6-0f39-4250-b3e0-83fb39c7bd2a","html_url":"https://github.com/explosion/thinc","commit_stats":{"total_commits":4845,"total_committers":68,"mean_commits":71.25,"dds":0.442311661506708,"last_synced_commit":"04956f0102e51ca3cbcd35ec2525066f0c5d2322"},"previous_names":[],"tags_count":130,"template":false,"template_full_name":null,"purl":"pkg:github/explosion/thinc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explosion%2Fthinc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explosion%2Fthinc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explosion%2Fthinc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explosion%2Fthinc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/explosion","download_url":"https://codeload.github.com/explosion/thinc/tar.gz/refs/heads/v8.3.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explosion%2Fthinc/sbom","scorecard":{"id":388310,"data":{"date":"2025-08-11","repo":{"name":"github.com/explosion/thinc","commit":"20eec35566997d5272d083be1f1a0ec9006934ff"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 8/29 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/cibuildwheel.yml:59","Info: jobLevel 'issues' permission set to 'read': .github/workflows/cibuildwheel.yml:60","Warn: jobLevel 'packages' permission set to 'write': .github/workflows/cibuildwheel.yml:61","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/cibuildwheel.yml:62","Info: jobLevel 'repository-projects' permission set to 'read': .github/workflows/cibuildwheel.yml:63","Info: jobLevel 'statuses' permission set to 'read': .github/workflows/cibuildwheel.yml:64","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/cibuildwheel.yml:57","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/cibuildwheel.yml:58","Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish_pypi.yml:19","Warn: no topLevel permission defined: .github/workflows/cibuildwheel.yml:1","Warn: no topLevel permission defined: .github/workflows/explosionbot.yml:1","Warn: no topLevel permission defined: .github/workflows/issue-manager.yml:1","Warn: no topLevel permission defined: .github/workflows/publish_pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact release-v8.3.6 not signed: https://api.github.com/repos/explosion/thinc/releases/210343632","Warn: release artifact release-v8.3.4 not signed: https://api.github.com/repos/explosion/thinc/releases/194412717","Warn: release artifact release-v8.3.3 not signed: https://api.github.com/repos/explosion/thinc/releases/190938372","Warn: release artifact release-v8.3.2 not signed: https://api.github.com/repos/explosion/thinc/releases/177768775","Warn: release artifact release-v8.3.1 not signed: https://api.github.com/repos/explosion/thinc/releases/177593613","Warn: release artifact release-v8.3.6 does not have provenance: https://api.github.com/repos/explosion/thinc/releases/210343632","Warn: release artifact release-v8.3.4 does not have provenance: https://api.github.com/repos/explosion/thinc/releases/194412717","Warn: release artifact release-v8.3.3 does not have provenance: https://api.github.com/repos/explosion/thinc/releases/190938372","Warn: release artifact release-v8.3.2 does not have provenance: https://api.github.com/repos/explosion/thinc/releases/177768775","Warn: release artifact release-v8.3.1 does not have provenance: https://api.github.com/repos/explosion/thinc/releases/177593613"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish_pypi.yml:12"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cibuildwheel.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/cibuildwheel.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/explosionbot.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/explosionbot.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/explosionbot.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/explosionbot.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/issue-manager.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/issue-manager.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish_pypi.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/publish_pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish_pypi.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/publish_pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/explosion/thinc/tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: website/Dockerfile:1: pin your Docker image by updating node:16 to node:16@sha256:f77a1aef2da8d83e45ec990f45df50f1a286c5fe8bbfb8c6e4246c6389705c0b","Warn: npmCommand not pinned by hash: website/Dockerfile:12","Warn: pipCommand not pinned by hash: .github/workflows/explosionbot.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:74","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:75","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:98","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:106","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:110","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   9 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"74 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2022-249 / GHSA-9jmq-rx5f-8jwq","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-xq7p-g2vc-g82p","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-c6f8-8r25-c4gc","Warn: Project is vulnerable to: GHSA-h2pm-378c-pcxx","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-7hpj-7hhx-2fgx","Warn: Project is vulnerable to: GHSA-44fp-w29j-9vj5","Warn: Project is vulnerable to: GHSA-4pg4-qvpc-4q3h","Warn: Project is vulnerable to: GHSA-g5hg-p3ph-g8qg","Warn: Project is vulnerable to: GHSA-fjgf-rc76-4x9p","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-x7hr-w5r2-h6wg","Warn: Project is vulnerable to: GHSA-rjqq-98f6-6j3r","Warn: Project is vulnerable to: GHSA-mjxr-4v3x-q3m4","Warn: Project is vulnerable to: GHSA-cgfm-xwp7-2cvr","Warn: Project is vulnerable to: GHSA-rm97-x556-q36h","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-54xq-cgqr-rpm3","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-hc6q-2mpp-qw7j","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc","Warn: Project is vulnerable to: GHSA-f9xv-q969-pqx4"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T17:12:33.154Z","repository_id":21986409,"created_at":"2025-08-18T17:12:33.154Z","updated_at":"2025-08-18T17:12:33.154Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30913804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-25T01:19:28.689Z","status":"online","status_checked_at":"2026-03-25T02:00:07.751Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","artificial-intelligence","deep-learning","functional-programming","jax","machine-learning","machine-learning-library","mxnet","natural-language-processing","nlp","python","pytorch","spacy","tensorflow","type-checking"],"created_at":"2024-07-31T19:01:16.312Z","updated_at":"2026-04-01T21:25:57.202Z","avatar_url":"https://github.com/explosion.png","language":"Python","readme":"\u003ca href=\"https://explosion.ai\"\u003e\u003cimg src=\"https://explosion.ai/assets/img/logo.svg\" width=\"125\" height=\"125\" align=\"right\" /\u003e\u003c/a\u003e\n\n# Thinc: A refreshing functional take on deep learning, compatible with your favorite libraries\n\n### From the makers of [spaCy](https://spacy.io) and [Prodigy](https://prodi.gy)\n\n[Thinc](https://thinc.ai) is a **lightweight deep learning library** that offers\nan elegant, type-checked, functional-programming API for **composing models**,\nwith support for layers defined in other frameworks such as **PyTorch,\nTensorFlow and MXNet**. You can use Thinc as an interface layer, a standalone\ntoolkit or a flexible way to develop new models. Previous versions of Thinc have\nbeen running quietly in production in thousands of companies, via both\n[spaCy](https://spacy.io) and [Prodigy](https://prodi.gy). We wrote the new\nversion to let users **compose, configure and deploy custom models** built with\ntheir favorite framework.\n\n[![tests](https://github.com/explosion/thinc/actions/workflows/tests.yml/badge.svg)](https://github.com/explosion/thinc/actions/workflows/tests.yml)\n[![Current Release Version](https://img.shields.io/github/v/release/explosion/thinc.svg?include_prereleases\u0026sort=semver\u0026style=flat-square\u0026logo=github)](https://github.com/explosion/thinc/releases)\n[![PyPi Version](https://img.shields.io/pypi/v/thinc.svg?include_prereleases\u0026sort=semver\u0026style=flat-square\u0026logo=pypi\u0026logoColor=white)](https://pypi.python.org/pypi/thinc)\n[![conda Version](https://img.shields.io/conda/vn/conda-forge/thinc.svg?style=flat-square\u0026logo=conda-forge\u0026logoColor=white)](https://anaconda.org/conda-forge/thinc)\n[![Python wheels](https://img.shields.io/badge/wheels-%E2%9C%93-4c1.svg?longCache=true\u0026style=flat-square\u0026logo=python\u0026logoColor=white)](https://github.com/explosion/wheelwright/releases)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)](https://github.com/ambv/black)\n[![Open demo in Colab][colab]][intro_to_thinc_colab]\n\n## 🔥 Features\n\n- **Type-check** your model definitions with custom types and\n  [`mypy`](https://mypy.readthedocs.io/en/latest/) plugin.\n- Wrap **PyTorch**, **TensorFlow** and **MXNet** models for use in your network.\n- Concise **functional-programming** approach to model definition, using\n  composition rather than inheritance.\n- Optional custom infix notation via **operator overloading**.\n- Integrated **config system** to describe trees of objects and hyperparameters.\n- Choice of **extensible backends**.\n- **[Read more \u0026rarr;](https://thinc.ai/docs)**\n\n## 🚀 Quickstart\n\nThinc runs on **Linux**, **macOS** and **Windows**.\nThe latest releases with binary wheels are available from\n[pip](https://pypi.python.org/pypi/thinc). Before you install Thinc and its\ndependencies, make sure that your `pip`, `setuptools` and `wheel` are up to\ndate. For the most recent releases, pip 19.3 or newer is recommended.\n\n```bash\npip install -U pip setuptools wheel\npip install thinc\n```\n\nSee the [extended installation docs](https://thinc.ai/docs/install#extended) for\ndetails on optional dependencies for different backends and GPU. You might also\nwant to\n[set up static type checking](https://thinc.ai/docs/install#type-checking) to\ntake advantage of Thinc's type system.\n\n\u003e ⚠️ If you have installed PyTorch and you are using Python 3.7+, uninstall the\n\u003e package `dataclasses` with `pip uninstall dataclasses`, since it may have been\n\u003e installed by PyTorch and is incompatible with Python 3.7+.\n\n### 📓 Selected examples and notebooks\n\nAlso see the [`/examples`](examples) directory and\n[usage documentation](https://thinc.ai/docs) for more examples. Most examples\nare Jupyter notebooks – to launch them on\n[Google Colab](https://colab.research.google.com) (with GPU support!) click on\nthe button next to the notebook name.\n\n| Notebook                                                                                                              | Description                                                                                                                                                                                       |\n| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [`intro_to_thinc`][intro_to_thinc]\u003cbr /\u003e[![Open in Colab][colab]][intro_to_thinc_colab]                               | Everything you need to know to get started. Composing and training a model on the MNIST data, using config files, registering custom functions and wrapping PyTorch, TensorFlow and MXNet models. |\n| [`transformers_tagger_bert`][transformers_tagger_bert]\u003cbr /\u003e[![Open in Colab][colab]][transformers_tagger_bert_colab] | How to use Thinc, `transformers` and PyTorch to train a part-of-speech tagger. From model definition and config to the training loop.                                                             |\n| [`pos_tagger_basic_cnn`][pos_tagger_basic_cnn]\u003cbr /\u003e[![Open in Colab][colab]][pos_tagger_basic_cnn_colab]             | Implementing and training a basic CNN for part-of-speech tagging model without external dependencies and using different levels of Thinc's config system.                                         |\n| [`parallel_training_ray`][parallel_training_ray]\u003cbr /\u003e[![Open in Colab][colab]][parallel_training_ray_colab]          | How to set up synchronous and asynchronous parameter server training with Thinc and [Ray](https://ray.readthedocs.io/en/latest/).                                                                 |\n\n**[View more \u0026rarr;](examples)**\n\n[colab]:\n  https://gistcdn.githack.com/ines/dcf354aa71a7665ae19871d7fd14a4e0/raw/461fc1f61a7bc5860f943cd4b6bcfabb8c8906e7/colab-badge.svg\n[intro_to_thinc]: examples/00_intro_to_thinc.ipynb\n[intro_to_thinc_colab]:\n  https://colab.research.google.com/github/explosion/thinc/blob/master/examples/00_intro_to_thinc.ipynb\n[transformers_tagger_bert]: examples/02_transformers_tagger_bert.ipynb\n[transformers_tagger_bert_colab]:\n  https://colab.research.google.com/github/explosion/thinc/blob/master/examples/02_transformers_tagger_bert.ipynb\n[pos_tagger_basic_cnn]: examples/03_pos_tagger_basic_cnn.ipynb\n[pos_tagger_basic_cnn_colab]:\n  https://colab.research.google.com/github/explosion/thinc/blob/master/examples/03_pos_tagger_basic_cnn.ipynb\n[parallel_training_ray]: examples/04_parallel_training_ray.ipynb\n[parallel_training_ray_colab]:\n  https://colab.research.google.com/github/explosion/thinc/blob/master/examples/04_parallel_training_ray.ipynb\n\n### 📖 Documentation \u0026 usage guides\n\n| Documentation                                                                     | Description                                           |\n| --------------------------------------------------------------------------------- | ----------------------------------------------------- |\n| [Introduction](https://thinc.ai/docs)                                             | Everything you need to know.                          |\n| [Concept \u0026 Design](https://thinc.ai/docs/concept)                                 | Thinc's conceptual model and how it works.            |\n| [Defining and using models](https://thinc.ai/docs/usage-models)                   | How to compose models and update state.               |\n| [Configuration system](https://thinc.ai/docs/usage-config)                        | Thinc's config system and function registry.          |\n| [Integrating PyTorch, TensorFlow \u0026 MXNet](https://thinc.ai/docs/usage-frameworks) | Interoperability with machine learning frameworks     |\n| [Layers API](https://thinc.ai/docs/api-layers)                                    | Weights layers, transforms, combinators and wrappers. |\n| [Type Checking](https://thinc.ai/docs/usage-type-checking)                        | Type-check your model definitions and more.           |\n\n## 🗺 What's where\n\n| Module                                    | Description                                                                       |\n| ----------------------------------------- | --------------------------------------------------------------------------------- |\n| [`thinc.api`](thinc/api.py)               | **User-facing API.** All classes and functions should be imported from here.      |\n| [`thinc.types`](thinc/types.py)           | Custom [types and dataclasses](https://thinc.ai/docs/api-types).                  |\n| [`thinc.model`](thinc/model.py)           | The `Model` class. All Thinc models are an instance (not a subclass) of `Model`.  |\n| [`thinc.layers`](thinc/layers)            | The layers. Each layer is implemented in its own module.                          |\n| [`thinc.shims`](thinc/shims)              | Interface for external models implemented in PyTorch, TensorFlow etc.             |\n| [`thinc.loss`](thinc/loss.py)             | Functions to calculate losses.                                                    |\n| [`thinc.optimizers`](thinc/optimizers.py) | Functions to create optimizers. Currently supports \"vanilla\" SGD, Adam and RAdam. |\n| [`thinc.schedules`](thinc/schedules.py)   | Generators for different rates, schedules, decays or series.                      |\n| [`thinc.backends`](thinc/backends)        | Backends for `numpy` and `cupy`.                                                  |\n| [`thinc.config`](thinc/config.py)         | Config parsing and validation and function registry system.                       |\n| [`thinc.util`](thinc/util.py)             | Utilities and helper functions.                                                   |\n\n## 🐍 Development notes\n\nThinc uses [`black`](https://github.com/psf/black) for auto-formatting,\n[`flake8`](http://flake8.pycqa.org/en/latest/) for linting and\n[`mypy`](https://mypy.readthedocs.io/en/latest/) for type checking. All code\nincludes type hints wherever possible. See\nthe [type reference](https://thinc.ai/docs/api-types) for more details on\nThinc's custom types.\n\n### 👷‍♀️ Building Thinc from source\n\nBuilding Thinc from source requires the full dependencies listed in\n[`requirements.txt`](requirements.txt) to be installed. You'll also need a\ncompiler to build the C extensions.\n\n```bash\ngit clone https://github.com/explosion/thinc\ncd thinc\npython -m venv .env\nsource .env/bin/activate\npip install -U pip setuptools wheel\npip install -r requirements.txt\npip install --no-build-isolation .\n```\n\nAlternatively, install in editable mode:\n\n```bash\npip install -r requirements.txt\npip install --no-build-isolation --editable .\n```\n\nOr by setting `PYTHONPATH`:\n\n```bash\nexport PYTHONPATH=`pwd`\npip install -r requirements.txt\npython setup.py build_ext --inplace\n```\n\n### 🚦 Running tests\n\nThinc comes with an [extensive test suite](thinc/tests). The following should\nall pass and not report any warnings or errors:\n\n```bash\npython -m pytest thinc    # test suite\npython -m mypy thinc      # type checks\npython -m flake8 thinc    # linting\n```\n\nTo view test coverage, you can run `python -m pytest thinc --cov=thinc`. We aim\nfor a 100% test coverage. This doesn't mean that we meticulously write tests for\nevery single line – we ignore blocks that are not relevant or difficult to test\nand make sure that the tests execute all code paths.\n","funding_links":[],"categories":["Python","机器学习框架","Deep Learning Framework","其他_机器学习与深度学习","Deep Learning"],"sub_categories":["High-Level DL APIs","Easier sharing of deep learning models and demos"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexplosion%2Fthinc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexplosion%2Fthinc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexplosion%2Fthinc/lists"}