Sequential-модель

Sequential-модель — это линейная последовательность слоев, где каждый слой имеет ровно один вход и один выход. Она идеально подходит для большинства стандартных задач машинного обучения и глубокого обучения, где данные проходят через цепочку преобразований.

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

// Создание пустой Sequential-модели
const model = tf.sequential();

Sequential-модель строится методом .add(), который позволяет добавлять слои один за другим.

model.add(tf.layers.dense({ units: 32, inputShape: [10], activation: 'relu' }));
model.add(tf.layers.dense({ units: 16, activation: 'relu' }));
model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));

Здесь:

  • units — количество нейронов в слое.
  • inputShape — размерность входных данных (только для первого слоя).
  • activation — функция активации, преобразующая сигнал нейронов.

Основные типы слоев в Sequential

Dense (полносвязный слой) Наиболее часто используемый слой. Каждый нейрон соединён со всеми нейронами предыдущего слоя.

Conv2D (сверточный слой) Используется для обработки изображений. Параметры включают размер ядра свёртки, количество фильтров и функцию активации.

MaxPooling2D (слой подвыборки) Снижает размерность изображений, выбирая максимальные значения из окон определённого размера.

Dropout Слой регуляризации, отключающий случайные нейроны во время обучения, предотвращая переобучение.

model.add(tf.layers.dropout({ rate: 0.2 }));

Компиляция модели

После добавления всех слоев необходимо скомпилировать модель, указав оптимизатор, функцию потерь и метрики.

model.compile({
  optimizer: tf.train.adam(0.001),
  loss: 'binaryCrossentropy',
  metrics: ['accuracy']
});
  • optimizer — метод оптимизации (Adam, SGD, RMSProp и др.).
  • loss — функция потерь, зависящая от задачи (регрессия или классификация).
  • metrics — метрики для оценки точности обучения.

Обучение модели

Для обучения используется метод fit, который принимает данные, метки и параметры обучения.

const xs = tf.tensor2d([[0,1,2,3,4,5,6,7,8,9]]);
const ys = tf.tensor2d([[1]]);

await model.fit(xs, ys, {
  epochs: 50,
  batchSize: 1,
  shuffle: true,
  validationSplit: 0.2,
  callbacks: {
    onEpochEnd: (epoch, logs) => {
      console.log(`Эпоха ${epoch}: Потери = ${logs.loss}, Точность = ${logs.acc}`);
    }
  }
});
  • epochs — количество проходов по всему набору данных.
  • batchSize — количество образцов в одной мини-партии для обновления весов.
  • validationSplit — доля данных, используемая для проверки точности на каждой эпохе.
  • callbacks — функции обратного вызова для отслеживания прогресса обучения.

Предсказания и оценка модели

Для получения прогнозов используется метод predict, который возвращает тензор с результатами.

const input = tf.tensor2d([[5,4,3,2,1,0,1,2,3,4]]);
const output = model.predict(input);
output.print();

Оценка точности модели на тестовых данных проводится через метод evaluate:

const testXs = tf.tensor2d([[1,2,3,4,5,6,7,8,9,0]]);
const testYs = tf.tensor2d([[1]]);
const evalResult = model.evaluate(testXs, testYs);
evalResult[0].print(); // Потери
evalResult[1].print(); // Точность

Сохранение и загрузка модели

TensorFlow.js позволяет сохранять модели локально или в браузере:

await model.save('localstorage://my-model');
const loadedModel = await tf.loadLayersModel('localstorage://my-model');

Поддерживаются также форматы indexeddb://, downloads:// и серверные URL.

Советы по работе с Sequential-моделью

  • Начальный слой всегда требует inputShape, все последующие — нет.
  • Выбор функции активации зависит от задачи: relu для скрытых слоев, sigmoid или softmax для выходного слоя.
  • Dropout и регуляризация помогают бороться с переобучением при малом объёме данных.
  • Размер батча и количество эпох сильно влияют на качество обучения, стоит экспериментировать.
  • Обработка данных перед подачей в модель (нормализация, стандартизация) критически важна для стабильного обучения.

Sequential-модель обеспечивает простую, но мощную основу для построения нейронных сетей в TensorFlow.js, особенно когда задача описывается последовательной структурой слоев без сложных ветвлений и соединений.