基于 JavaScript (Node.js) 的机器学习:ML 库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

基于 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

推荐