Skip to content

BatchNormalization does not work if scale=false while training #2868

Open
@1-bite-only

Description

@1-bite-only

TensorFlow.js version

tfjs-node: 1.5.2

Browser version

Describe the problem

TypeError: Cannot read property 'read' of undefined
    at node_modules\@tensorflow\tfjs-layers\dist\layers\normalization.js:240:66
    at node_modules\@tensorflow\tfjs-core\dist\engine.js:388:22
    at Engine.scopedRun (node_modules\@tensorflow\tfjs-core\dist\engine.js:398:23)
    at Engine.tidy (node_modules\@tensorflow\tfjs-core\dist\engine.js:387:21)
    at Object.tidy (node_modules\@tensorflow\tfjs-core\dist\globals.js:176:28)
    at BatchNormalization.call (node_modules\@tensorflow\tfjs-layers\dist\layers\normalization.js:212:28)
    at Object.nameScope (node_modules\@tensorflow\tfjs-layers\dist\common.js:41:19)
    at BatchNormalization.Layer.apply (node_modules\@tensorflow\tfjs-layers\dist\engine\topology.js:719:25)
    at Object.execute (node_modules\@tensorflow\tfjs-layers\dist\engine\executor.js:282:61)

After replace '_this.gamma.read()' with '_this.gamma == null ? null : _this.gamma.read()' in normalization.js:240, will get following error:

TypeError: Cannot read property 'dataId' of undefined
    at Engine.clone (node_modules\@tensorflow\tfjs-core\dist\engine.js:423:45)
    at node_modules\@tensorflow\tfjs-core\dist\engine.js:497:77
    at Array.map (<anonymous>)
    at saveFunc (node_modules\@tensorflow\tfjs-core\dist\engine.js:497:29)
    at engine_1.ENGINE.runKernelFunc.x (node_modules\@tensorflow\tfjs-core\dist\ops\batchnorm.js:281:9)
    at node_modules\@tensorflow\tfjs-core\dist\engine.js:528:55
    at node_modules\@tensorflow\tfjs-core\dist\engine.js:388:22
    at Engine.scopedRun (node_modules\@tensorflow\tfjs-core\dist\engine.js:398:23)
    at Engine.tidy (node_modules\@tensorflow\tfjs-core\dist\engine.js:387:21)
    at kernelFunc (node_modules\@tensorflow\tfjs-core\dist\engine.js:528:29)

Code to reproduce the bug

Add batch normalization layer with following config and train will reproduce the issue:

tf.layers.batchNormalization({
    epsilon: 1e-5,
    axis: 3,
    center: true,
    scale: false,
  })

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions