Repolode
chenglou

chenglou/handwired

一个将普通 JavaScript 控制流编译为可微分神经网络的研究项目,权重手工写入而非训练得到。

Star
1,819
Fork
151
未关闭 Issue
9
最近提交
3天前

这是什么?

Handwired 可以把包含 if-else 分支、循环和状态的普通 JavaScript 程序,转换为仅由浮点数矩阵乘法和 ReLU 构成的神经网络。条件判断被改写为算术运算,例如同时计算两个分支,再用基于 ReLU 的指示量选择其中一个结果,因此网络输出与原程序完全一致。

由于权重是手工编写的,无需训练,整个程序依然保持可微分。合并后的计算既可以在普通 JavaScript 中运行,也可以在 WebGPU 上执行,使已有的 GPU 优化技术能够作用于这些极简的基础运算。

项目探索的用途包括:解冻权重进行训练,把冻结的程序接入通用神经网络做端到端训练,以及让以单线程方式编写的 JavaScript 代码获得接近 GPU 的并行性。示例中包含在 10 万条文档上运行的 JSON 搜索演示。项目使用 Bun 管理,演示也可在线体验。

核心功能

  • 01将 if-else、循环和状态转换为矩阵乘法与 ReLU
  • 02权重手工编写,无需训练
  • 03整个程序保持可微分
  • 04可在普通 JavaScript 或 WebGPU 上运行
  • 05提供在线演示,包括对 10 万条文档的 JSON 搜索示例

适用场景

  • 研究如何将程序表示为神经网络
  • 尝试在神经网络中训练冻结的程序逻辑
  • 探索普通 JavaScript 代码的 GPU 并行执行

快速上手

  1. 1

    克隆仓库

    git clone
  2. 2

    安装依赖

    bun install
  3. 3

    在本地运行演示

    bun start

使用前须知

  • 这是一个用于演示概念的研究项目,而非可用于生产的库。
  • 运行演示需要 Bun 运行时,README 中未说明有替代方案。

标签

常见问题

handwired 是什么?
一个将普通 JavaScript 控制流编译为可微分神经网络的研究项目,权重手工写入而非训练得到。 Handwired 可以把包含 if-else 分支、循环和状态的普通 JavaScript 程序,转换为仅由浮点数矩阵乘法和 ReLU 构成的神经网络。条件判断被改写为算术运算,例如同时计算两个分支,再用基于 ReLU 的指示量选择其中一个结果,因此网络输出与原程序完全一致。
handwired 可以免费使用吗?用的什么许可证?
handwired 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
handwired 还在维护吗?
活跃维护中。handwired 最近一次提交是在 2026年10月17日。
handwired 适合用来做什么?
研究如何将程序表示为神经网络 尝试在神经网络中训练冻结的程序逻辑 探索普通 JavaScript 代码的 GPU 并行执行
handwired 怎么安装和运行?
克隆仓库: git clone 安装依赖: bun install 在本地运行演示: bun start
在哪里获取 handwired?
源代码和安装说明在 GitHub 上:https://github.com/chenglou/handwired

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目