@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
39 lines (35 loc) • 618 B
JavaScript
import Layer from './base.js'
/**
* Matrix multiply layer
*/
export default class MatmulLayer extends Layer {
calc(...x) {
this._i = x
let o = x[0]
for (let i = 1; i < x.length; i++) {
o = o.dot(x[i])
}
return o
}
grad(bo) {
const bi = []
for (let i = 0; i < this._i.length; i++) {
let m = null
if (i === 0) {
m = bo
} else {
m = this._i[0]
for (let k = 1; k < i; k++) {
m = m.dot(this._i[k])
}
m = m.tDot(bo)
}
for (let k = this._i.length - 1; k > i; k--) {
m = m.dot(this._i[k].t)
}
bi.push(m)
}
return bi
}
}
MatmulLayer.registLayer()