2024年TypeScript机器学习:ML库概览

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

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

开始课程

2024年TypeScript机器学习:ML库概览



TypeScript不仅稳占Web开发领域,在数据科学领域也占据了一席之地。得益于静态类型和与JavaScript的兼容性,它成为了构建可直接在浏览器或服务器(Node.js)上运行的机器学习(ML)模型的便捷工具。本文将介绍TypeScript机器学习的关键库、它们的特点、代码示例以及应用场景。



1. TensorFlow.js —— 浏览器端ML的主要框架



TensorFlow.js 是流行框架TensorFlow在JavaScript/TypeScript上的移植版本。它允许在浏览器和Node.js中运行模型的训练和推理。该库通过WebGL和WebGPU支持GPU加速,从而提升性能。



主要功能:

  • 使用高级API(tf.sequential、tf.model)创建神经网络。
  • 从TensorFlow Hub加载预训练模型。
  • 将Python版TensorFlow模型转换为.json格式。
  • 处理张量、优化器和层。


示例:TypeScript线性回归

import * as tf from '@tensorflow/tfjs';

// 数据:关系 y = 2x - 1const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 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: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // 输出:~19 (接近 2*10 - 1 = 19)});


2. ML5.js —— 创意ML库



ML5.js 构建于TensorFlow.js之上,专注于易用性。它提供了用于图像、声音、文本和手势识别的现成模型。非常适合教育项目和原型开发。



示例:图像分类

import * as ml5 from 'ml5';

// 加载预训练模型 MobileNetconst classifier = ml5.imageClassifier('MobileNet');

// 图像分类const img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('结果:', results[0].label);});


3. Brain.js —— 适用于Node.js和浏览器的神经网络



Brain.js 是一个轻量级库,用于在JavaScript/TypeScript中构建神经网络。支持多种架构:LSTM、RNN、GRU。非常适合时间序列预测和文本处理任务。



示例:用于XOR的简单神经网络

import 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] }]);

const output = net.run([1, 0]); // ~0.99console.log(output);


4. Synaptic —— 架构灵活的库



Synaptic 允许创建任意架构的神经网络,包括多层感知器、反馈网络和自组织映射(Kohonen)。无依赖,可在浏览器中运行。



示例:创建感知器

import { Architect, Trainer } from 'synaptic';

const network = new Architect.Perceptron(2, 3, 1);const trainer = new Trainer(network);

trainer.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 1000 });

console.log(network.activate([1, 0])); // ~0.98


5

推荐