机器学习:适用于浏览器和 Node.js 的 TypeScript 库

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

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

开始课程

TypeScript 机器学习:关键库概览



TypeScript 是 JavaScript 的静态类型超集,正越来越多地应用于机器学习(ML)项目中。得益于严格的类型检查、更高的代码可读性以及出色的 IDE 支持,TypeScript 能够创建既可在浏览器中运行,也可在服务器端(Node.js)运行的可靠 ML 应用程序。本文将介绍 TypeScript 机器学习的主要库、它们的功能,并提供实用示例。



1. TensorFlow.js —— TypeScript 机器学习的旗舰



TensorFlow.js 是流行框架 TensorFlow 的 JavaScript 和 TypeScript 移植版本。它允许直接在浏览器或 Node.js 上运行机器学习模型,无需服务器基础设施。该库支持 ML 的所有主要阶段:加载预训练模型、训练新模型、推理(预测)甚至微调(fine-tuning)。



安装:

npm install @tensorflow/tfjsnpm install @tensorflow/tfjs-node  # 用于 Node.js(带加速)


示例:使用预训练模型 MobileNet 进行图像分类

import * as tf from '@tensorflow/tfjs';import { loadGraphModel } from '@tensorflow/tfjs-converter';

async function classifyImage(imageElement: HTMLImageElement) { // 加载预训练的 MobileNet 模型 const model = await loadGraphModel( 'https://tfhub.dev/google/tfjs-model/imagenet/mobilenet_v2_100_224/classification/3/default/1' );

// 将图像转换为张量 const tensor = tf.browser.fromPixels(imageElement) .resizeNearestNeighbor([224, 224]) .toFloat() .expandDims();

// 获取预测结果 const prediction = model.predict(tensor) as tf.Tensor; const topK = tf.topk(prediction, 3); const indices = await topK.indices.data(); const values = await topK.values.data();

console.log('Top-3 预测结果:', indices, values);}

// 使用示例const img = document.getElementById('myImage') as HTMLImageElement;classifyImage(img);


TensorFlow.js 非常适合计算机视觉、文本处理(NLP)和时间序列等任务。在 TypeScript 中,您可以为所有方法获得自动补全功能,从而显著加快开发速度。



2. ML5.js —— 面向创意 ML 的友好接口



ML5.js 构建在 TensorFlow.js 之上,但提供了更简单、更高级的 API。该库面向艺术家、设计师和希望快速添加 ML 功能而无需深入数学知识的开发者。ML5.js 支持图像分类、目标检测、文本生成、声音分析等多种任务。



安装:

npm install ml5


示例:使用 COCO-SSD 进行目标检测

import ml5 from 'ml5';

async function detectObjects(videoElement: HTMLVideoElement) { // 加载目标检测模型 const objectDetector = await ml5.objectDetector('cocossd');

// 对视频执行检测 const results = await objectDetector.detect(videoElement);

results.forEach((obj: any) => { console.log(`对象:${obj.label},置信度:${obj.confidence.toFixed(2)}`); console.log(`坐标:x=${obj.x}, y=${obj.y}, 宽度=${obj.width}, 高度=${obj.height}`); });}

// 与网络摄像头配合使用const video = document.getElementById('webcam') as HTMLVideoElement;navigator.mediaDevices.getUserMedia({ video: true }) .then(stream => { video.srcObject = stream; }) .then(() => detectObjects(video));


ML5.js 非常适合原型开发、教育项目和交互式装置。在 TypeScript 中,您可以为检测结果定义类型,这使得

推荐