UNPKG

@hoff97/tensor-js

Version:

PyTorch like deep learning inferrence library

65 lines 1.81 kB
/** * L2 weight regularization for a particular model. * * @example * ```typescript * const model = new Linear(32,1); * const regularizer = new L2Regularization(model, 0.01); * //... * const prediction = (await model.forward([x]))[0]; * let loss = prediction.subtract(y).reduceSumSquare(); * loss = loss.add(regularizer.getLoss()); * //... * loss.backward(); * //... * ``` */ export class L2Regularization { constructor(model, gamma) { this.model = model; this.gamma = gamma; this.parameters = model.getParameters(); } getLoss() { let loss = this.parameters[0].sumSquare(); let factor = this.gamma; for (let i = 1; i < this.parameters.length; i++) { loss = loss.add(this.parameters[i].sumSquare(), factor, this.gamma); factor = factor / factor; } return loss; } } /** * L1 weight regularization for a particular model. * * @example * ```typescript * const model = new Linear(32,1); * const regularizer = new L1Regularization(model, 0.01); * //... * const prediction = (await model.forward([x]))[0]; * let loss = prediction.subtract(y).reduceSumSquare(); * loss = loss.add(regularizer.getLoss()); * //... * loss.backward(); * //... * ``` */ export class L1Regularization { constructor(model, gamma) { this.model = model; this.gamma = gamma; this.parameters = model.getParameters(); } getLoss() { let loss = this.parameters[0].abs().sum(); let factor = this.gamma; for (let i = 1; i < this.parameters.length; i++) { loss = loss.add(this.parameters[i].abs().sum(), factor, this.gamma); factor = factor / factor; } return loss; } } //# sourceMappingURL=regularization.js.map