Форматы входных данных

Keras.js представляет собой библиотеку для выполнения моделей Keras непосредственно в браузере на JavaScript. Работа с входными данными является ключевым аспектом эффективного использования этой библиотеки, так как правильный формат данных определяет корректность предсказаний и производительность.

Типы данных

Keras.js поддерживает несколько типов данных для входных тензоров:

  1. Float32Array Наиболее часто используемый формат. Представляет собой одномерный массив 32-битных чисел с плавающей точкой. Используется для передачи числовых данных в модели, особенно при работе с изображениями, аудиосигналами и другими непрерывными величинами.

  2. TypedArray других типов В некоторых случаях допустимо использование Int32Array или Uint8Array, однако данные могут потребовать предварительной нормализации или преобразования в Float32Array, поскольку большинство моделей Keras ожидают числа с плавающей точкой.

  3. Массивы JavaScript (Array) Массивы стандартного типа JavaScript могут быть использованы, но их обработка менее эффективна. Библиотека автоматически конвертирует их в Float32Array, что может создавать дополнительную нагрузку при больших объемах данных.

Размерность и форма тензоров

Каждое входное значение для модели Keras.js должно соответствовать форме тензора, определенной при обучении модели. Основные правила:

  • Одномерные тензоры ([n]) — подходят для векторов признаков.
  • Двумерные тензоры ([batch_size, n_features]) — стандарт для задач классификации с фиксированным набором признаков.
  • Трех- и четырехмерные тензоры ([batch_size, height, width, channels]) — применяются для обработки изображений и последовательностей. В Keras.js обычно используется порядок каналов channels_last, то есть последний индекс соответствует числу каналов (RGB, RGBA, аудио-каналы).

Важно, чтобы форма входного массива точно совпадала с ожидаемой моделью, иначе возникнут ошибки выполнения.

Нормализация и предобработка

Kачество предсказаний сильно зависит от правильной предобработки данных:

  • Изображения Обычно преобразуются в массивы чисел с плавающей точкой и нормализуются в диапазон [0, 1] или [-1, 1]. Например, RGB-пиксели делятся на 255.
  • Аудио и сигнальные данные Часто используют нормализацию амплитуд в диапазон [−1, 1] или стандартное масштабирование с вычитанием среднего и делением на стандартное отклонение.
  • Категориальные данные Преобразуются в one-hot encoding или embedding-матрицы, в зависимости от структуры модели.

Передача данных в модель

Для запуска модели используется метод model.predict:

const inputData = new Float32Array([...]);
const output = model.predict({ input_name: inputData });

Где input_name — имя входного слоя модели. В случае нескольких входов данные передаются объектом:

const output = model.predict({
  input1: inputArray1,
  input2: inputArray2
});

Результат предсказания возвращается в виде Float32Array, размерность которого соответствует выходному тензору модели.

Особенности работы с пакетами (batch)

Keras.js поддерживает пакетную обработку данных (batch processing). Входные массивы могут содержать несколько экземпляров для одновременной обработки:

  • Если входная форма [n_features], необходимо добавить дополнительное измерение [batch_size, n_features].
  • Для изображений с формой [height, width, channels] требуется [batch_size, height, width, channels].

Пакетная обработка повышает эффективность, особенно на устройствах с GPU через WebGL, снижая накладные расходы на вызовы функций.

Ошибки и проверка входных данных

Распространенные проблемы при работе с входными данными:

  • Несоответствие формы тензора ожиданиям модели.
  • Использование неподдерживаемых типов данных (Array без конвертации в Float32Array).
  • Отсутствие нормализации чисел, что может привести к неверным предсказаниям.

Keras.js предоставляет методы для проверки форм и типов данных перед вызовом predict, что позволяет выявить ошибки на раннем этапе.

Итоговые рекомендации по форматам

  • Всегда использовать Float32Array для числовых данных.
  • Проверять размерность входного массива, учитывая batch и каналы.
  • Нормализовать данные в соответствии с тем, как они подавались на обучение модели.
  • Для нескольких входов использовать объект с ключами по именам слоев.

Формат и структура входных данных в Keras.js определяют правильность и точность работы модели, поэтому строгая проверка этих аспектов является обязательной при разработке приложений на JavaScript с использованием нейронных сетей.