Слои активации — это фундаментальная часть нейронных сетей,
отвечающая за введение нелинейности в модель. Без
активации нейронная сеть сводится к простой линейной комбинации входов и
весов, что ограничивает её способность к обучению сложных функций. В
TensorFlow.js слои активации реализуются с помощью класса
tf.layers.activation и встроенных функций активации,
которые могут применяться как в составе слоев, так и отдельно.
В TensorFlow.js для создания слоя с активацией используется следующий синтаксис:
const tf = require('@tensorflow/tfjs');
const layer = tf.layers.dense({
units: 64,
activation: 'relu', // тип активации
inputShape: [100]
});
Ключевые моменты:
units — количество нейронов в слое.activation — функция активации. Может быть одной из
встроенных: 'relu', 'sigmoid',
'tanh', 'softmax', 'linear'.inputShape — форма входных данных (для первого слоя
сети).Кроме использования в Dense или других слоях, активацию
можно применить отдельно:
const x = tf.tensor2d([[1, -2], [3, -4]]);
const activated = tf.layers.activation({ activation: 'relu' }).apply(x);
activated.print();
1. ReLU (Rectified Linear Unit) Функция: [ f(x) = (0, x)] Преимущества:
Особенности:
2. Sigmoid Функция: [ f(x) = ] Применение:
Особенности:
3. Tanh (гиперболический тангенс) Функция: [ f(x) = (x) = ] Свойства:
4. Softmax Функция: [ f(x_i) = ] Применение:
5. Linear (линейная) Функция: [ f(x) = x] Применение:
TensorFlow.js позволяет определять собственные функции активации с
помощью tf.layers.activation и передачи функции через
tf.customGrad или простое использование
tf.tidy для вычислений:
function customActivation(x) {
return x.relu().add(x.sigmoid());
}
const customLayer = tf.layers.activation({
activation: customActivation
});
Это дает возможность создавать комбинации известных функций или полностью новые нелинейности.
activation.activation.tf.layers.activation между другими слоями, что повышает
гибкость.Пример:
const model = tf.sequential();
model.add(tf.layers.dense({ units: 128, inputShape: [64] }));
model.add(tf.layers.activation({ activation: 'relu' }));
model.add(tf.layers.dense({ units: 10 }));
model.add(tf.layers.activation({ activation: 'softmax' }));
Такой подход позволяет легко изменять функции активации и экспериментировать с архитектурой сети.
LeakyReLU,
PReLU) являются стандартом для скрытых слоев.tanh или модификации ReLU.Слои активации — ключевой элемент, определяющий способность модели к обучению сложных зависимостей и обобщению. В TensorFlow.js их реализация интуитивно понятна и поддерживает как стандартные функции, так и гибкие кастомные варианты.