diff --git a/tfjs-core/src/optimizers/adadelta_optimizer.ts b/tfjs-core/src/optimizers/adadelta_optimizer.ts index f4bb3c6429..eb4c5e423d 100644 --- a/tfjs-core/src/optimizers/adadelta_optimizer.ts +++ b/tfjs-core/src/optimizers/adadelta_optimizer.ts @@ -31,7 +31,12 @@ import {Optimizer, OptimizerVariable} from './optimizer'; /** @doclink Optimizer */ export class AdadeltaOptimizer extends Optimizer { /** @nocollapse */ - static className = 'Adadelta'; // Name matters for Python compatibility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'Adadelta'; + } private accumulatedGrads: OptimizerVariable[] = []; private accumulatedUpdates: OptimizerVariable[] = []; diff --git a/tfjs-core/src/optimizers/adagrad_optimizer.ts b/tfjs-core/src/optimizers/adagrad_optimizer.ts index 7d7d48c75c..393f511430 100644 --- a/tfjs-core/src/optimizers/adagrad_optimizer.ts +++ b/tfjs-core/src/optimizers/adagrad_optimizer.ts @@ -31,7 +31,12 @@ import {Optimizer, OptimizerVariable} from './optimizer'; /** @doclink Optimizer */ export class AdagradOptimizer extends Optimizer { /** @nocollapse */ - static className = 'Adagrad'; // Note: Name matters for Python compatibility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'Adagrad'; + } private accumulatedGrads: OptimizerVariable[] = []; diff --git a/tfjs-core/src/optimizers/adam_optimizer.ts b/tfjs-core/src/optimizers/adam_optimizer.ts index 493a0ccca9..ad43b432fb 100644 --- a/tfjs-core/src/optimizers/adam_optimizer.ts +++ b/tfjs-core/src/optimizers/adam_optimizer.ts @@ -34,7 +34,12 @@ import {Optimizer, OptimizerVariable} from './optimizer'; export class AdamOptimizer extends Optimizer { /** @nocollapse */ - static className = 'Adam'; // Note: Name matters for Python compatibility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'Adam'; + } private accBeta1: Variable; private accBeta2: Variable; diff --git a/tfjs-core/src/optimizers/adamax_optimizer.ts b/tfjs-core/src/optimizers/adamax_optimizer.ts index 5b2a18f15a..0b9a80ae82 100644 --- a/tfjs-core/src/optimizers/adamax_optimizer.ts +++ b/tfjs-core/src/optimizers/adamax_optimizer.ts @@ -33,7 +33,12 @@ import {Optimizer, OptimizerVariable} from './optimizer'; export class AdamaxOptimizer extends Optimizer { /** @nocollapse */ - static className = 'Adamax'; // Note: Name matters for Python compatbility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'Adamax'; + } private accBeta1: Variable; private iteration: Variable; diff --git a/tfjs-core/src/optimizers/momentum_optimizer.ts b/tfjs-core/src/optimizers/momentum_optimizer.ts index d2fe014b80..4ed1615755 100644 --- a/tfjs-core/src/optimizers/momentum_optimizer.ts +++ b/tfjs-core/src/optimizers/momentum_optimizer.ts @@ -32,7 +32,12 @@ import {SGDOptimizer} from './sgd_optimizer'; export class MomentumOptimizer extends SGDOptimizer { /** @nocollapse */ // Name matters for Python compatibility. - static override className = 'Momentum'; + static override get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'Momentum'; + } private m: Scalar; private accumulations: OptimizerVariable[] = []; diff --git a/tfjs-core/src/optimizers/rmsprop_optimizer.ts b/tfjs-core/src/optimizers/rmsprop_optimizer.ts index 084c8de2c5..5b8dd0b705 100644 --- a/tfjs-core/src/optimizers/rmsprop_optimizer.ts +++ b/tfjs-core/src/optimizers/rmsprop_optimizer.ts @@ -32,7 +32,12 @@ import {Optimizer, OptimizerVariable} from './optimizer'; /** @doclink Optimizer */ export class RMSPropOptimizer extends Optimizer { /** @nocollapse */ - static className = 'RMSProp'; // Note: Name matters for Python compatibility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'RMSProp'; + } private centered: boolean; private accumulatedMeanSquares: OptimizerVariable[] = []; diff --git a/tfjs-core/src/optimizers/sgd_optimizer.ts b/tfjs-core/src/optimizers/sgd_optimizer.ts index f96184c8fa..0935c973bc 100644 --- a/tfjs-core/src/optimizers/sgd_optimizer.ts +++ b/tfjs-core/src/optimizers/sgd_optimizer.ts @@ -29,7 +29,12 @@ import {Optimizer} from './optimizer'; /** @doclink Optimizer */ export class SGDOptimizer extends Optimizer { /** @nocollapse */ - static className = 'SGD'; // Note: Name matters for Python compatibility. + static get className() { + // Name matters for Python compatibility. + // This is a getter instead of a property because when it's a property, it + // prevents the entire class from being tree-shaken. + return 'SGD'; + } protected c: Scalar; constructor(protected learningRate: number) {