Рекуррентные ячейки (Recurrent Cells) представляют собой фундаментальные строительные блоки для создания рекуррентных нейронных сетей (RNN) в Keras.js. В отличие от обычных слоёв, рекуррентные ячейки могут существовать как самостоятельные объекты, что позволяет детально управлять внутренними состояниями сети и использовать их в более сложных архитектурах.
Каждая рекуррентная ячейка имеет несколько ключевых компонентов:
В Keras.js рекуррентная ячейка создается через конструктор конкретного типа ячейки. Например:
const rnnCell = new KerasJS.layers.SimpleRNNCell({
units: 64,
activation: 'tanh'
});
После создания ячейки можно напрямую управлять её состоянием:
rnnCell.state = new Float32Array(64).fill(0); // Инициализация состояния нулями
Это позволяет гибко работать с последовательностями различной длины, вручную управлять скрытым состоянием или сохранять его между различными вызовами сети.
Рекуррентная ячейка как объект поддерживает метод call,
который применяется к входным данным:
const output = rnnCell.call(inputVector);
При этом inputVector – массив значений текущего шага
последовательности. Метод call возвращает объект с двумя
свойствами:
Такой подход позволяет строить сложные последовательные вычисления
без необходимости использовать готовый слой RNN, что
особенно полезно при реализации кастомных архитектур.
Standalone ячейки можно оборачивать в слой RNN:
const rnnLayer = new KerasJS.layers.RNN({
cell: rnnCell,
returnSequences: true,
returnState: true
});
true,
возвращает всю последовательность выходов, а не только последний
элемент.Такой слой позволяет комбинировать несколько ячеек, строить stacked RNN или bidirectional RNN, сохраняя при этом возможность детального контроля за состояниями.
state и методами, упрощающими отладку и
тестирование отдельных компонентов RNN.SimpleRNNCell,
LSTMCell, GRUCell, а также возможность
создавать пользовательские наследники.Использование рекуррентных ячеек как самостоятельных объектов открывает доступ к глубокому уровню управления внутренними вычислениями сети, позволяя создавать оптимизированные, нестандартные архитектуры, адаптированные под конкретные задачи.