@hoff97/tensor-js
Version:
PyTorch like deep learning inferrence library
85 lines • 2.15 kB
JavaScript
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