
Введение
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/