Машинное обучение: библиотеки TypeScript для браузера и Node.js

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на TypeScript: обзор ключевых библиотек

TypeScript — статически типизированная надстройка над JavaScript — всё активнее используется в проектах, связанных с машинным обучением (ML). Благодаря строгой типизации, улучшенной читаемости кода и отличной поддержке IDE, TypeScript позволяет создавать надёжные ML-приложения, работающие как в браузере, так и на сервере (Node.js). В этой статье мы рассмотрим основные библиотеки для машинного обучения на TypeScript, их возможности и приведём практические примеры.

1. TensorFlow.js — флагман машинного обучения на TypeScript

TensorFlow.js — это порт популярного фреймворка TensorFlow для JavaScript и TypeScript. Он позволяет запускать модели машинного обучения непосредственно в браузере или на Node.js без серверной инфраструктуры. Библиотека поддерживает все основные этапы ML: загрузку предобученных моделей, обучение новых моделей, инференс (предсказание) и даже тонкую настройку (fine-tuning).

Установка:

npm install @tensorflow/tfjs
npm 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('Топ-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 вы можете определить типы для результатов детекции, что делает код более надёжным.

3. Brain.js — простые нейронные сети для TypeScript

Brain.js — лёгкая библиотека для создания и обучения нейронных сетей. Она поддерживает многослойные перцептроны, рекуррентные сети (LSTM) и даже сети с обучением с подкреплением. Brain.js очень проста в использовании и не требует глубоких знаний ML. Идеально подходит для задач регрессии, классификации и прогнозирования временных рядов.

Установка:

npm install brain.js

Пример: обучение сети XOR (исключающее ИЛИ)

import brain from 'brain.js';

// Создаём нейронную сеть с одним скрытым слоем
const net = new brain.NeuralNetwork({
  hiddenLayers: [3], // один скрытый слой с 3 нейронами
});

// Обу                    

Рекомендаций