UNPKG

@hoff97/tensor-js

Version:

PyTorch like deep learning inferrence library

85 lines 2.15 kB
export class SinBack { constructor(input) { this.input = input; } backward(grad) { const cos = this.input.value.cos(); const gradAbs = grad.multiply(cos); cos.delete(); const needed = this.input.backward(gradAbs); if (!needed) { gradAbs.delete(); } } delete() { if (!this.input.isLeaf()) { this.input.delete(); } } } export class ASinBack { constructor(input) { this.input = input; } backward(grad) { const squared = this.input.value.multiply(this.input.value); const oneMinus = squared.addMultiplyScalar(-1, 1); squared.delete(); const sqrt = oneMinus.sqrt(); oneMinus.delete(); const gradASin = grad.divide(sqrt); sqrt.delete(); const needed = this.input.backward(gradASin); if (!needed) { gradASin.delete(); } } delete() { if (!this.input.isLeaf()) { this.input.delete(); } } } export class SinHBack { constructor(input) { this.input = input; } backward(grad) { const cosh = this.input.value.cosh(); const gradCosH = grad.multiply(cosh); cosh.delete(); const needed = this.input.backward(gradCosH); if (!needed) { gradCosH.delete(); } } delete() { if (!this.input.isLeaf()) { this.input.delete(); } } } export class ASinHBack { constructor(input) { this.input = input; } backward(grad) { const squared = this.input.value.multiply(this.input.value); const onePlus = squared.addMultiplyScalar(1, 1); squared.delete(); const sqrt = onePlus.sqrt(); onePlus.delete(); const gradASinH = grad.divide(sqrt); sqrt.delete(); const needed = this.input.backward(gradASinH); if (!needed) { gradASinH.delete(); } } delete() { if (!this.input.isLeaf()) { this.input.delete(); } } } //# sourceMappingURL=sinBack.js.map