javascript42
Главная
Все учебники
Блог
Учебник Keras.js
Введение в Keras.js и среду разработки
Что такое Keras.js и зачем он нужен
Место Keras.js в экосистеме машинного обучения на JavaScript
Сравнение с TensorFlow.js и другими библиотеками
Архитектурные особенности: CPU, GPU и WebGL-бэкенды
Установка через npm и подключение через CDN
Настройка окружения: Node.js, браузер, сборщики
Первый запуск: проверка работоспособности библиотеки
Инструменты разработчика и отладка в браузере
Основы работы с тензорами
Понятие тензора и его роль в вычислениях
Создание тензоров: скаляры, векторы, матрицы, многомерные массивы
Типы данных: float32, int32, bool и другие
Форма тензора и понятие rank
Изменение формы: reshape, expandDims, squeeze
Индексирование и срезы
Операции над тензорами: сложение, умножение, транспонирование
Поэлементные операции и broadcasting
Преобразование тензоров в обычные массивы JavaScript
Управление памятью и утечки: dispose и tidy
Построение моделей
Последовательная модель Sequential
Функциональный API: входы, выходы, ветвления
Слои как строительные блоки модели
Параметры слоёв: units, activation, input_shape
Инициализаторы весов
Регуляризация: L1, L2, Dropout
Пакетная нормализация BatchNormalization
Связывание слоёв и построение графа вычислений
Вывод структуры модели: model.summary()
Клонирование и копирование моделей
Слои нейронной сети
Полносвязный слой Dense
Свёрточный слой Conv2D и его параметры
Слои пулинга: MaxPooling2D, AveragePooling2D, GlobalAveragePooling2D
Слои для работы с последовательностями: SimpleRNN, LSTM, GRU
Двунаправленные рекуррентные слои Bidirectional
Слои встраивания Embedding
Слои нормализации: LayerNormalization, BatchNormalization
Слои объединения и разделения: Concatenate, Add, Multiply, Split
Слой Flatten и его назначение
Слои изменения формы: Reshape, Permute, RepeatVector
Слои пространственного dropout: SpatialDropout1D, SpatialDropout2D
Слои свёртки: Conv1D, Conv3D, DepthwiseConv2D, SeparableConv2D
Рекуррентные ячейки как самостоятельные объекты
Написание пользовательского слоя
Функции активации
Назначение функций активации
ReLU и его варианты: LeakyReLU, PReLU, ELU, ThresholdedReLU
Sigmoid и Tanh
Softmax и Softplus
SELU и его свойства
Активация как параметр слоя и как отдельный слой
Написание пользовательской функции активации
Компиляция и настройка обучения
Метод compile: структура и обязательные параметры
Функции потерь: MSE, MAE, categorical_crossentropy, binary_crossentropy
Метрики качества: accuracy, precision, recall, AUC
Пользовательские функции потерь
Пользовательские метрики
Оптимизатор SGD и параметр learning rate
Оптимизатор Adam и его гиперпараметры
RMSprop, Adagrad, Adadelta, Adamax, Nadam
Клиппинг градиентов
Изменение learning rate во время обучения
Подготовка и загрузка данных
Форматы входных данных
Нормализация и стандартизация
One-hot кодирование меток
Разбивка на обучающую, валидационную и тестовую выборки
Работа с изображениями: загрузка, декодирование, изменение размера
Преобразование данных в тензоры из TypedArray
Работа с CSV и JSON данными
Потоковая подача данных через генераторы
Аугментация данных на стороне клиента
Процесс обучения
Метод fit: параметры и возвращаемые значения
Параметр epochs и batch_size
Валидация в процессе обучения: validation_split и validation_data
Колбэки: назначение и жизненный цикл
Стандартные колбэки: EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
Написание пользовательского колбэка
История обучения и объект History
Визуализация кривых потерь и метрик
Метод fitDataset для работы с генераторами
Дообучение на новых данных
Оценка и предсказание
Метод evaluate: использование и интерпретация результатов
Метод predict и predict_on_batch
Интерпретация выходных тензоров
Пороговая классификация и выбор порога
Матрица ошибок средствами JavaScript
ROC-кривая и AUC вручную
Визуализация предсказаний в браузере
Сохранение и загрузка моделей
Форматы сохранения: LayersModel и GraphModel
Сохранение в браузере: IndexedDB и LocalStorage
Сохранение в файловую систему в Node.js
Экспорт модели в JSON и бинарные веса
Загрузка модели из URL
Загрузка предобученных моделей Keras Python
Конвертация моделей с помощью tensorflowjs_converter
Версионирование моделей
Частичная загрузка и горячая замена модели
Перенос обучения
Концепция transfer learning
Заморозка слоёв: trainable = false
Замена классификационной головы
Дообучение с разморозкой верхних слоёв
Скорость обучения при fine-tuning
Работа с предобученными весами MobileNet, VGG, ResNet
Извлечение признаков как отдельная задача
Компьютерное зрение
Классификация изображений: архитектура и обучение
Свёрточные сети: LeNet, AlexNet-подобные архитектуры
Архитектура VGG в Keras.js
Депс-сепарабельные свёртки и MobileNet
Локализация объектов: регрессия координат
Семантическая сегментация: архитектура U-Net
Обработка видеопотока с getUserMedia
Предобработка кадров для реального времени
Оптимизация FPS при инференсе
Обработка последовательностей и текста
Токенизация и построение словаря в JavaScript
Слой Embedding: обучение с нуля
Классификация текста с помощью LSTM
Двунаправленные LSTM для анализа тональности
Генерация текста символ за символом
Механизм внимания: реализация вручную
Архитектура seq2seq в Keras.js
Работа с временными рядами: прогнозирование
Скользящее окно и подготовка последовательностей
Автоэнкодеры и генеративные модели
Архитектура классического автоэнкодера
Сжатие и восстановление данных
Шумоподавляющий автоэнкодер
Вариационный автоэнкодер VAE: теория и реализация
Пространство латентных переменных
Сэмплинг и reparameterization trick
Генеративно-состязательные сети GAN: обзор архитектуры
Обучение GAN в браузере: особенности и ограничения
Производительность и оптимизация
Профилирование модели: время инференса, потребление памяти
Квантизация весов
Прунинг нейронов и слоёв
Оптимизация графа вычислений
WebGL-бэкенд: настройка и ограничения
WASM-бэкенд: установка и использование
Работа с Web Workers для неблокирующего инференса
SharedArrayBuffer и параллельные вычисления
Кэширование модели в браузере
Батчинг запросов для повышения пропускной способности
Развёртывание в браузере
Интеграция с React: хуки и жизненный цикл
Интеграция с Vue.js
Интеграция с Angular
Загрузка модели по требованию и ленивая инициализация
Прогрессивная загрузка весов
Индикаторы загрузки и UX при работе с ML
Обработка ошибок при загрузке и инференсе
Безопасность: защита весов модели
Размер бандла и стратегии его уменьшения
Работа в Node.js
Установка и настройка tfjs-node
Использование нативного бэкенда CPU и GPU
Обучение моделей на сервере
Чтение данных из файловой системы
Сохранение и загрузка моделей на сервере
Экспресс-сервер с инференсом модели
Стриминг предсказаний через WebSocket
Сравнение производительности: Node.js vs браузер
Отладка и тестирование моделей
Типичные ошибки размерностей и их диагностика
Отладка значений тензоров через print и array
Проверка градиентов
Переобучение и методы борьбы с ним
Недообучение: диагностика и решения
Юнит-тестирование моделей с помощью Jest
Интеграционное тестирование пайплайна данных
Логирование и мониторинг обучения