Keras.js — это библиотека для запуска предобученных моделей Keras прямо в браузере на JavaScript с использованием WebGL. Для эффективной работы с тензорами в Keras.js критически важно понимать поэлементные операции и broadcasting, так как они лежат в основе большинства вычислений нейронных сетей.
Поэлементные операции выполняются индекс за
индексом, то есть каждая операция применяется к соответствующим
элементам входных массивов. В Keras.js это реализуется на уровне
Tensor объектов.
Примеры поэлементных операций:
C = A + B, где каждый
элемент C[i] = A[i] + B[i].C = A - B.C = A * B.C = A / B.ReLU,
sigmoid, tanh также применяются
поэлементно.Особенности реализации:
const a = new KerasJS.Tensor([2, 2], Float32Array.from([1, 2, 3, 4]));
const b = new KerasJS.Tensor([2, 2], Float32Array.from([5, 6, 7, 8]));
const c = a.add(b); // каждый элемент a[i] + b[i]
Ключевой момент: операции создают новые тензоры, исходные остаются неизменными, что важно учитывать при управлении памятью в браузере.
Broadcasting — это механизм, который позволяет выполнять поэлементные операции над тензорами разных форм, автоматически расширяя меньший тензор до формы большего.
Пример:
const a = new KerasJS.Tensor([3, 1], Float32Array.from([1, 2, 3]));
const b = new KerasJS.Tensor([1, 4], Float32Array.from([10, 20, 30, 40]));
const c = a.add(b);
a имеет форму [3,1].b имеет форму [1,4].a до [3,4] и
b до [3,4], после чего выполняется
поэлементное сложение.const X = new KerasJS.Tensor([32, 128]); // 32 примера, 128 нейронов
const bias = new KerasJS.Tensor([128]); // bias для каждого нейрона
const output = X.add(bias); // bias автоматически broadcast
const features = new KerasJS.Tensor([64, 10]);
const scale = new KerasJS.Tensor([1, 10]); // один коэффициент на каждую колонку
const normalized = features.mul(scale); // broadcasting по строкам
const preActivation = new KerasJS.Tensor([128]);
const activated = preActivation.relu(); // ReLU применяется поэлементно
inPlace версии функций, если они
доступны.Понимание поэлементных операций и broadcasting в Keras.js является фундаментальным для построения и запуска эффективных моделей нейронных сетей на стороне клиента. Эти концепции обеспечивают как правильность вычислений, так и оптимизацию производительности при работе с большими массивами данных в браузере.