JavaScript 机器学习:Node.js 库
尽管 Python 仍然是机器学习领域的主导语言,但 JavaScript(尤其是 Node.js)生态系统正在积极发展,并提供了强大的机器学习工具。使用 JavaScript 可以创建易于与 Web 应用程序集成、在服务器上实时运行甚至在浏览器中运行的机器学习解决方案。如果您的项目已经使用 Node.js,那么引入机器学习库可能比切换到 Python 更为自然。
在本文中,我们将介绍 JavaScript (Node.js) 机器学习的关键库、它们的特点以及使用示例。
1. TensorFlow.js
TensorFlow.js 是 JavaScript 中最强大、最流行的机器学习库,是从原始 TensorFlow 移植而来的。它支持在浏览器和 Node.js 中运行模型,并通过 CUDA 或 WebGL 使用硬件加速。
主要功能:
- 运行预训练模型(MobileNet、BERT、YOLO)。
- 从头开始训练神经网络。
- 迁移学习(微调现有模型)。
- 在 Node.js 上通过 CUDA 支持 GPU。
- 从 Python TensorFlow 转换模型(TFJS 格式)。
示例:使用 TensorFlow.js 进行线性回归
const tf = require('@tensorflow/tfjs-node');
// 数据:x -> y (y = 2x - 1)const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);const ys = tf.tensor2d([1, 3, 5, 7], [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(() => { // 预测 x = 5 model.predict(tf.tensor2d([5], [1, 1])).print();});2. Brain.js
Brain.js 是一个简单直观的神经网络库。非常适合初学者和小型项目。支持多层感知器(MLP)、循环神经网络(RNN)和长短期记忆网络(LSTM)。
主要功能:
- 极低的上手门槛——API 只需几行代码。
- 支持异步训练以避免阻塞。
- 以 JSON 格式保存和加载训练好的模型。
- 可在 Node.js 和浏览器中运行。
示例:使用 Brain.js 实现 XOR
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
// XOR 训练数据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.99console.log(output);3. Synaptic
Synaptic 是一个架构无关的神经网络库。它允许构建几乎任何类型的网络:感知器、多层网络、记忆网络(LSTM)、Hopfield 网络等。该库没有外部依赖。
主要功能:
- 架构构建灵活。
- 支持多种学习算法(SGD、Momentum、Nesterov)。
- 网络可视化工具(在浏览器中)。
- 支持保存/加载模型。
示例:使用 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.connect(hiddenLayer);hiddenLayer.connect(outputLayer);
const myNetwork = new Network({input: inputLayer, hidden: [hid