Введение

TensorFlow.js — это мощная библиотека машинного обучения, которая позволяет запускать модели машинного обучения непосредственно в браузере или Node.js. TypeScript, с другой стороны, является типизированным надмножеством JavaScript, которое привносит статическую типизацию в JavaScript, помогая вам писать более чистый и удобный для сопровождения код.

В этом руководстве мы рассмотрим практическое использование TensorFlow.js на примерах TypeScript, таких как классификация изображений, анализ тональности и обучение пользовательской модели.

Установка и настройка

Для начала вам необходимо установить TensorFlow.js и TypeScript. Вы можете сделать это с помощью npm:

npm install @tensorflow/tfjs @types/tensorflow__tfjs typescript

Затем создайте файл tsconfig.json для настройки TypeScript:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true
  }
}

Классификация изображений

В этом разделе мы будем использовать TensorFlow.js для классификации изображений с использованием модели MobileNet.

Во-первых, давайте импортируем необходимые библиотеки:

import * as tf from "@tensorflow/tfjs";
import { loadImage } from "canvas";

Теперь давайте загрузим модель и классифицируем изображение:

async function classifyImage(imagePath: string) {
  const model = await tf.loadLayersModel(
    "https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_0.25_224/model.json"
  );

  const image = await loadImage(imagePath);
  const input = tf.browser.fromPixels(image).toFloat().expandDims();

  const normalized = input.div(255);
  const predictions = model.predict(normalized) as tf.Tensor;

  const topK = 5;
  const topKIndices = tf.topk(predictions, topK).indices.dataSync();

  console.log("Top", topK, "predictions:");
  for (let i = 0; i < topKIndices.length; i++) {
    console.log(`#${i + 1}: ${topKIndices[i]}`);
  }
}

classifyImage("path/to/your/image.jpg");

Анализ настроений

В этом разделе мы будем использовать TensorFlow.js для анализа тональности заданного текста.

Сначала импортируйте необходимые библиотеки:

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

Теперь давайте загрузим модель и проанализируем настроение:

async function analyzeSentiment(text: string) {
  const model = await tf.loadLayersModel(
    "https://path/to/your/sentiment-analysis/model.json"
  );

  const tokens = tokenize(text); // Implement a tokenize function to tokenize the input text
  const input = tf.tensor1d(tokens).expandDims(0);

  const output = model.predict(input) as tf.Tensor;
  const sentiment = output.dataSync()[0];

  console.log("Sentiment score:", sentiment);
}

analyzeSentiment("I love using TensorFlow.js!");

Обучение пользовательской модели

В этом разделе мы создадим и обучим простую модель линейной регрессии с помощью TensorFlow.js.

Сначала импортируйте необходимые библиотеки:

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

Теперь давайте создадим, обучим и протестируем модель:

async function trainLinearRegressionModel() {
  // Define a simple linear regression model
  const model = tf.sequential();
  model.add(tf.layers.dense({ units: 1, inputShape: [1] }));

  // Compile the model
  model.compile({ loss: "meanSquaredError", optimizer: "sgd" });

  // Generate synthetic data
  const dataX = tf.tensor1d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
  const dataY = tf.tensor1d([2, 4, 6, 8, 10, 12, 14, 16, 18, 20]);

  // Train the model
  const epochs = 100;
  await model.fit(dataX, dataY, { epochs });

  // Test the model
  const testInput = tf.tensor1d([11, 12, 13]);
  const testOutput = model.predict(testInput) as tf.Tensor;

  console.log("Test input:", testInput.arraySync());
  console.log("Test output:", testOutput.arraySync());
}

trainLinearRegressionModel();

В этом примере мы создаем простую модель линейной регрессии с одним плотным слоем. Мы компилируем модель со среднеквадратичной ошибкой в ​​качестве функции потерь и стохастическим градиентным спуском (SGD) в качестве оптимизатора. Затем мы генерируем синтетические данные для обучения и обучаем модель на 100 эпох. Наконец, мы тестируем обученную модель на новых данных.

Заключение

В этом руководстве мы рассмотрели практическое использование TensorFlow.js на примерах TypeScript, включая классификацию изображений, анализ тональности и обучение пользовательской модели. TensorFlow.js позволяет перенести машинное обучение в Интернет, а TypeScript предоставляет уровень строгой типизации для написания чистого и поддерживаемого кода. Комбинируя эти мощные инструменты, вы можете создавать эффективные и надежные веб-приложения, использующие возможности машинного обучения.

Tensorflow — https://www.tensorflow.org/