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 — функция активации, преобразующая сигнал
нейронов.Dense (полносвязный слой) Наиболее часто используемый слой. Каждый нейрон соединён со всеми нейронами предыдущего слоя.
Conv2D (сверточный слой) Используется для обработки изображений. Параметры включают размер ядра свёртки, количество фильтров и функцию активации.
MaxPooling2D (слой подвыборки) Снижает размерность изображений, выбирая максимальные значения из окон определённого размера.
Dropout Слой регуляризации, отключающий случайные нейроны во время обучения, предотвращая переобучение.
model.add(tf.layers.dropout({ rate: 0.2 }));
После добавления всех слоев необходимо скомпилировать модель, указав оптимизатор, функцию потерь и метрики.
model.compile({
optimizer: tf.train.adam(0.001),
loss: 'binaryCrossentropy',
metrics: ['accuracy']
});
Для обучения используется метод 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}`);
}
}
});
Для получения прогнозов используется метод 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.
inputShape, все последующие — нет.relu для скрытых слоев, sigmoid или
softmax для выходного слоя.Sequential-модель обеспечивает простую, но мощную основу для построения нейронных сетей в TensorFlow.js, особенно когда задача описывается последовательной структурой слоев без сложных ветвлений и соединений.