@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
54 lines (53 loc) • 1.5 kB
TypeScript
/**
* 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;
_selfattention: boolean;
_i: any;
_m: any;
_q: any;
_k: any;
_v: any;
_atn: Tensor;
_matmul(a: any, b: any, transpose_a?: boolean, transpose_b?: boolean): Tensor;
grad(bo: any): Tensor | {}[];
_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';