Слой Reshape позволяет изменять форму входных данных без изменения их содержимого. Он крайне полезен при переходе между слоями с различными требованиями к размерности тензоров.
Синтаксис:
const layer = new KerasJS.layers.Reshape({ target_shape: [height, width, channels] });
Параметры:
target_shape — массив чисел, задающий новую форму
выходного тензора. Важно: произведение всех размерностей нового тензора
должно совпадать с количеством элементов во входном тензоре. Например,
тензор формы [2, 6] можно преобразовать в
[3, 4], но не в [4, 4].Примеры применения:
const reshapeLayer = new KerasJS.layers.Reshape({ target_shape: [28, 28, 1] });
const reshapeLayer = new KerasJS.layers.Reshape({ target_shape: [64 * 64] });
Особенности:
-1 для автоматического вычисления одной из осей.
Например:const reshapeLayer = new KerasJS.layers.Reshape({ target_shape: [-1, 32] });
Здесь Keras.js сам вычислит первую размерность так, чтобы количество элементов осталось неизменным.
Слой Permute выполняет перестановку осей входного тензора. Он применяется, когда порядок размерностей имеет значение, например, при работе с последовательностями или изображениями.
Синтаксис:
const layer = new KerasJS.layers.Permute({ dims: [2, 1, 3] });
Параметры:
dims — массив чисел, задающий новый порядок осей.
Примечание: нумерация начинается с 1 для первой оси после батча
(Keras.js сохраняет размер батча без изменения).Примеры использования:
[batch, timesteps, features] в
[batch, features, timesteps]:const permuteLayer = new KerasJS.layers.Permute({ dims: [2, 1] });
const permuteLayer = new KerasJS.layers.Permute({ dims: [3, 1, 2] });
Это полезно для согласования формата с требуемым слоем свёртки.
Особенности:
Reshape для подготовки
данных к LSTM или Conv2D.Слой RepeatVector создаёт копии входного вектора по новой оси, превращая одномерный тензор в многомерный. Это позволяет повторять данные для обработки последовательными слоями, такими как LSTM.
Синтаксис:
const layer = new KerasJS.layers.RepeatVector({ n: 10 });
Параметры:
n — количество повторений входного вектора вдоль новой
оси.Примеры применения:
const repeatLayer = new KerasJS.layers.RepeatVector({ n: 5 });
// Вход: [batch, features]
// Выход: [batch, 5, features]
const repeatLayer = new KerasJS.layers.RepeatVector({ n: 20 });
Особенности:
[batch, features].Использование этих слоев требует внимательного контроля размерностей,
так как несоответствие форм приводит к ошибкам во время выполнения
модели. Поддержка динамических осей с -1 упрощает работу с
изменяемыми входными данными и облегчает создание универсальных
архитектур.