Keras.js представляет собой библиотеку для запуска моделей Keras прямо в браузере с использованием JavaScript и WebGL. В связке с Angular это позволяет создавать интерактивные веб-приложения с машинным обучением без необходимости серверного бэкенда. Интеграция строится вокруг создания Angular-сервисов и компонентов, которые обеспечивают загрузку, инициализацию и использование нейронных сетей.
Для начала необходимо установить Keras.js через npm:
npm install keras-js
После установки библиотека доступна для импорта в Angular-проектах:
import * as KerasJS from 'keras-js';
Важно убедиться, что Angular конфигурация поддерживает работу с
WebGL и что бандлер (например, Webpack или Angular CLI)
корректно обрабатывает зависимости библиотеки.
Angular-сервис позволяет централизованно управлять моделями, обеспечивая повторное использование кода и упрощая тестирование.
import { Injectable } from '@angular/core';
import * as KerasJS from 'keras-js';
@Injectable({
providedIn: 'root'
})
export class KerasService {
private model: any;
constructor() { }
async loadModel(modelPath: string): Promise<void> {
this.model = new KerasJS.Model({ filepath: modelPath, gpu: true });
await this.model.ready();
}
async predict(inputData: any): Promise<any> {
if (!this.model) {
throw new Error('Модель не загружена');
}
return this.model.predict(inputData);
}
}
Ключевые моменты:
filepath — путь к модели в формате Keras
(.json с весами .bin).gpu: true позволяет использовать ускорение через WebGL,
значительно повышая производительность.ready() возвращает промис, сигнализирующий о
полной загрузке и готовности модели.Компоненты Angular могут использовать сервис для предсказаний. Для примера создается компонент, который принимает входные данные из формы и отображает результат.
import { Component, OnInit } from '@angular/core';
import { KerasService } from './keras.service';
@Component({
selector: 'app-predictor',
template: `
<input [(ngModel)]="inputData" placeholder="Введите данные">
<button (click)="makePrediction()">Предсказать</button>
<div *ngIf="outputData">Результат: {{ outputData }}</div>
`
})
export class PredictorComponent implements OnInit {
inputData: any;
outputData: any;
constructor(private kerasService: KerasService) { }
async ngOnInit() {
await this.kerasService.loadModel('assets/models/my_model.json');
}
async makePrediction() {
this.outputData = await this.kerasService.predict(this.inputData);
}
}
Особенности работы:
[(ngModel)].Для крупных моделей рекомендуется использовать ленивую загрузку и разбиение веса на несколько файлов, чтобы уменьшить время инициализации. Также можно кэшировать веса с использованием IndexedDB или LocalStorage через Keras.js, что позволяет повторно использовать загруженные данные без дополнительной загрузки с сервера.
model.ready() позволяет отлавливать
ошибки загрузки.gpu: true значительно ускоряет
обработку.<canvas> для извлечения пиксельных данных и передачи
их в модель.Angular и Keras.js создают мощное сочетание для построения современных веб-приложений с машинным обучением прямо на клиенте, позволяя реализовать предсказания в реальном времени, интерактивные интерфейсы и сложные вычислительные задачи без серверного бэкенда.