TypeScript 机器学习:库与工具概览
TypeScript 不仅仅是 JavaScript 的强类型版本。凭借其生态系统和与 JS 的兼容性,它已成为直接在浏览器或服务器(Node.js)上进行机器学习(ML)的强大平台。在本文中,我们将介绍四个关键库,它们允许您使用 TypeScript 开发、训练和运行 ML 模型。
1. TensorFlow.js — TypeScript 中的 ML 旗舰
TensorFlow.js 是流行框架 TensorFlow 在 JavaScript/TypeScript 上的移植版本。它同时支持浏览器和 Node.js。其主要优势是能够在客户端直接执行训练和推理,而无需将数据发送到服务器。
安装
npm install @tensorflow/tfjsnpm install @tensorflow/tfjs-node // 用于 Node.js 的 CPU 加速npm install @tensorflow/tfjs-node-gpu // 用于 GPU示例:TypeScript 中的线性回归
import * as tf from '@tensorflow/tfjs';
// 创建一个简单模型:y = 2x - 1const model = tf.sequential();model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// 编译model.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });
// 训练数据const xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);const ys = tf.tensor2d([-1, 1, 3, 5, 7], [5, 1]);
// 训练model.fit(xs, ys, { epochs: 250 }).then(() => { // 预测 x=5 const output = model.predict(tf.tensor2d([5], [1, 1])) as tf.Tensor; output.print(); // ≈ 9 (2*5 - 1)});TensorFlow.js 还支持加载预训练模型(例如用于图像分类的 MobileNet)以及处理计算图。
2. ML5.js — 面向创意项目的 ML
ML5.js 构建于 TensorFlow.js 之上,专注于易用性。非常适合艺术家、设计师和 ML 新手。该库为分类、文本生成、手势识别等任务提供高级 API。
安装
npm install ml5示例:图像分类(MobileNet)
import * as ml5 from 'ml5';
// 加载预训练的 MobileNet 模型const classifier = ml5.imageClassifier('MobileNet');
// 对 URL 中的图像进行分类const img = new Image();img.crossOrigin = 'anonymous';img.src = 'https://example.com/cat.jpg';
img.onload = () => { classifier.classify(img, (err: Error | null, results: any[]) => { if (err) { console.error(err); return; } console.log('结果:', results); // [{ label: 'tabby cat', confidence: 0.98 }, ...] });};ML5.js 会自动加载模型权重并提供简单的回调函数。非常适合快速原型设计和交互式安装。
3. Brain.js — 无复杂性的神经网络
Brain.js 是一个用最少代码创建神经网络的库。支持前馈网络、LSTM 和 RNN。可在浏览器和 Node.js 中运行。
安装
npm install brain.js示例:XOR 函数(逻辑异或)
import * as brain from '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] }], { iterations: 10000, errorThresh: 0.005});
const output = net.run([1, 0]); // ≈ 0.98 (接近 1)console.log(`结果: ${output}`);Brain.js 会自动归一化数据,并支持以 JSON 格式保存/加载训练好的模型。
4. Synaptic — 架构灵活性
Synaptic 是一个用于创建复杂神经网络架构的库:感知器、多层网络