TypeScript 机器学习:2024 年顶级 ML 库

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

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

开始课程

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 是一个用于创建复杂神经网络架构的库:感知器、多层网络

推荐