基于 JavaScript (Node.js) 的机器学习:库与工具
尽管 Python 仍然是机器学习领域的主导语言,但 JavaScript(尤其是 Node.js 平台)在该领域正迅速流行起来。这得益于其能够在浏览器中直接运行模型、统一技术栈(全栈 JS)以及出现了用于处理神经网络、线性代数和统计学的强大库。本文将介绍 Node.js 的关键机器学习库、它们的功能及使用示例。
1. TensorFlow.js — JS 机器学习的旗舰
TensorFlow.js 是谷歌流行框架的移植版,专为 JavaScript 适配。它允许从头训练模型、运行预训练模型,并在 Node.js 和浏览器中执行推理。该库通过 WebGL(浏览器中)或 CUDA(通过 Node.js 插件)支持 GPU 加速。
安装:
npm install @tensorflow/tfjs @tensorflow/tfjs-node示例:线性回归
const tf = require('@tensorflow/tfjs-node');
// 训练数据const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);const ys = tf.tensor2d([2, 4, 6, 8], [4, 1]);
// 创建模型const model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
// 编译model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// 训练model.fit(xs, ys, {epochs: 200}).then(() => { // 预测 model.predict(tf.tensor2d([5], [1, 1])).print();});关键功能:
- 完全支持神经网络(卷积、循环、Transformer)
- 从 Keras (Python) 和 TensorFlow Hub 加载模型
- 计算图操作与自动微分
- 内置可视化工具 (tfjs-vis)
2. Brain.js — 简单易用
Brain.js 是 JavaScript 中最简单的神经网络库之一。它非常适合初学者和小型项目。支持前馈网络和循环网络(LSTM、GRU),以及时间序列处理。
安装:
npm install brain.js示例:XOR 分类
const brain = require('brain.js');const net = new brain.NeuralNetwork();
net.train([ {input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}, {input: [1, 0], output: [1]}, {input: [1, 1], output: [0]}]);
const output = net.run([1, 0]); // ~0.98console.log(output);特点:
- 极低的上手门槛——仅需几行代码
- 内置数据归一化支持
- 支持以 JSON 格式保存和加载训练好的模型
- 支持循环网络(LSTMTimeStep、GRUTimeStep)
3. Synaptic — 模块化架构
Synaptic 是一个开源库,提供灵活的神经网络构建架构。它不依赖外部库(仅需纯 JS),允许创建任意网络拓扑,包括多层感知机、长短期记忆网络(LSTM)甚至胶囊网络。
安装:
npm install synaptic示例:创建感知机
const synaptic = require('synaptic');
const { Layer, Network, Trainer } = synaptic;
const inputLayer = new Layer(2);const hiddenLayer = new Layer(3);const outputLayer = new Layer(1);
inputLayer.project(hiddenLayer);hiddenLayer.project(outputLayer);
const myNetwork = new Network({ input: inputLayer, hidden: [hiddenLayer], output: outputLayer});
const t