В библиотеке TensorFlow.js создание моделей нейронных сетей начинается с определения входного слоя. Входной слой задаёт форму данных, которые будут подаваться на модель, и является отправной точкой для всех последующих слоёв.
В TensorFlow.js входной слой создаётся с помощью функции
tf.input(config). Аргумент config представляет
собой объект с ключевыми параметрами:
shape — массив, задающий размерность
входных данных, исключая размер пакета (batch size). Например, для
изображений размером 28×28 пикселей в градациях серого это будет
[28, 28, 1].dtype — тип данных входного тензора
('float32', 'int32' и т.д.). По умолчанию
'float32'.name — необязательное имя слоя.
Используется для удобства отладки и сохранения модели.sparse — логическое значение,
указывающее, будет ли вход разреженным. По умолчанию
false.Пример создания входного слоя для изображений:
const input = tf.input({shape: [28, 28, 1], name: 'input_image'});
Здесь создаётся тензор с формой [null, 28, 28, 1], где
null соответствует размеру пакета данных, который может
изменяться при обучении или инференсе.
InputLayerОбъект, возвращаемый функцией tf.input, является
экземпляром InputLayer и имеет следующие ключевые
свойства:
shape — форма входного тензора без
учета пакета.batchShape — форма входного тензора с
размером пакета.dtype — тип данных.name — имя слоя.trainable — всегда false,
так как входной слой не содержит обучаемых параметров.Входной слой не выполняет никаких вычислений. Его основная задача — определить форму данных и передать их следующему слою. Для соединения с другими слоями используется метод вызова слоя как функции:
const dense = tf.layers.dense({units: 64, activation: 'relu'});
const output = dense.apply(input);
Здесь dense.apply(input) создаёт новый тензор, который
будет выходом плотного слоя с 64 нейронами и активацией ReLU, используя
входной слой input.
TensorFlow.js поддерживает модели с несколькими входными слоями. Для
этого создаются несколько объектов tf.input:
const inputA = tf.input({shape: [32], name: 'input_a'});
const inputB = tf.input({shape: [16], name: 'input_b'});
Далее эти входы могут передаваться в разные ветви сети и объединяться
на промежуточных слоях, например, через
tf.layers.concatenate():
const merged = tf.layers.concatenate().apply([inputA, inputB]);
const output = tf.layers.dense({units: 1, activation: 'sigmoid'}).apply(merged);
tf.modelДля создания модели входной слой используется как обязательный аргумент при определении модели:
const model = tf.model({inputs: input, outputs: output});
Если несколько входов:
const model = tf.model({inputs: [inputA, inputB], outputs: output});
Входные слои способны принимать данные в виде:
tf.tensor().Важно, чтобы форма подаваемых данных соответствовала форме, указанной
в shape входного слоя, иначе будет сгенерирована
ошибка.
batchInputShapeВместо обычного shape можно использовать
batchInputShape, чтобы явно задать размер пакета:
const input = tf.input({batchInputShape: [32, 28, 28, 1], name: 'fixed_batch_input'});
В этом случае модель ожидает пакеты фиксированного размера 32. Это полезно для сценариев, где размер пакета должен быть постоянным, например, при некоторых типах рекуррентных слоёв.
tf.input как отправную точку построения
модели; любые операции, выполняемые с этим слоем, не изменяют данные, а
лишь создают граф вычислений.Входной слой tf.input является фундаментом любой модели
TensorFlow.js, обеспечивая строгое определение структуры входных данных
и служа ключевым элементом для построения сложных нейронных сетей.