UNPKG

@ai-on-browser/data-analysis-models

Version:

Data analysis model package without any dependencies

54 lines (53 loc) 1.54 kB
/** * Attention layer */ export default class AttentionLayer extends Layer { /** * @param {object} config object * @param {number} [config.dk] Inner depth size * @param {number} [config.dv] Output depth size * @param {number[][] | Matrix | string} [config.wq] Weight of q * @param {number[][] | Matrix | string} [config.wk] Weight of k * @param {number[][] | Matrix | string} [config.wv] Weight of v */ constructor({ dk, dv, wq, wk, wv, ...rest }: { dk?: number; dv?: number; wq?: number[][] | Matrix | string; wk?: number[][] | Matrix | string; wv?: number[][] | Matrix | string; }); _dk: number; _dv: number; _wq: Matrix<number>; _wqname: string; _wk: Matrix<number>; _wkname: string; _wv: Matrix<number>; _wvname: string; calc(x: any, memory: any): Tensor<number>; _selfattention: boolean; _i: any; _m: any; _q: any; _k: any; _v: any; _atn: Tensor<number>; _matmul(a: any, b: any, transpose_a?: boolean, transpose_b?: boolean): Tensor<number>; grad(bo: any): Tensor<number> | {}[]; _dwv: any; _dwq: any; _dwk: any; update(optimizer: any): void; toObject(): { type: string; dk: number; dv: number; wq: string | number[][]; wk: string | number[][]; wv: string | number[][]; }; } import Layer from './base.js'; import Matrix from '../../../util/matrix.js'; import Tensor from '../../../util/tensor.js';