JavaScript 机器学习:Node.js 库

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

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

开始课程

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

推荐