class_docstr: Scales the kernel weights with sqrt(multiplier/fan_in)*kernel_multiplier.
  
  This class is meant to be used as a base class to inherit from in conjunction
  with also inheriting from an existing keras layer. It assumes that
  the tf.Variable containing the kernel weights is assigned to self.kernel and
  that the fan_in is the product of the kernel shape excluding the last
  dimension. It also allows for optionally scaling the bias for the equalized
  learning rate and hence expects that the existing keras layer has a self.bias
  variable in this case.
  
  Layers built with this class scale the kernel with the same scaling factor
  that is proposed in "Delving Deep into Rectifiers: Surpassing Human-Level
  Performance on ImageNet Classification" for initialization
  https://arxiv.org/abs/1502.01852.
  The kernel gets scaled by sqrt(2/fan_in) before it is being used.
  
  These layers can be used for implementing the equalized learning rate which is
  used in "Progressive Growing of GANs for Improved Quality, Stability, and
  Variation" https://arxiv.org/abs/1710.10196.
  
  The layers also support specifying additional multipliers which can be used to
  implement a learning rate multiplier if ADAM or other adaptive optimizers are
  used. This mechanism can be used to implement the learning rate multiplier of
  the mapping network in stylegan.
  https://arxiv.org/abs/1812.04948
class_docstr_tok: ["Scales","the","kernel","weights","with","sqrt","(","multiplier\/fan_in",")","*","kernel_multiplier",".","This","class","is","meant","to","be","used","as","a","base","class","to","inherit","from","in","conjunction","with","also","inheriting","from","an","existing","keras","layer",".","It","assumes","that","the","tf.Variable","containing","the","kernel","weights","is","assigned","to","self.kernel","and","that","the","fan_in","is","the","product","of","the","kernel","shape","excluding","the","last","dimension",".","It","also","allows","for","optionally","scaling","the","bias","for","the","equalized","learning","rate","and","hence","expects","that","the","existing","keras","layer","has","a","self.bias","variable","in","this","case",".","Layers","built","with","this","class","scale","the","kernel","with","the","same","scaling","factor","that","is","proposed","in","``","Delving","Deep","into","Rectifiers",":","Surpassing","Human-Level","Performance","on","ImageNet","Classification","''","for","initialization","https",":","\/\/arxiv.org\/abs\/1502.01852",".","The","kernel","gets","scaled","by","sqrt","(","2\/fan_in",")","before","it","is","being","used",".","These","layers","can","be","used","for","implementing","the","equalized","learning","rate","which","is","used","in","``","Progressive","Growing","of","GANs","for","Improved","Quality",",","Stability",",","and","Variation","''","https",":","\/\/arxiv.org\/abs\/1710.10196",".","The","layers","also","support","specifying","additional","multipliers","which","can","be","used","to","implement","a","learning","rate","multiplier","if","ADAM","or","other","adaptive","optimizers","are","used",".","This","mechanism","can","be","used","to","implement","the","learning","rate","multiplier","of","the","mapping","network","in","stylegan",".","https",":","\/\/arxiv.org\/abs\/1812.04948"]
code: def kernel(self, kernel: tf.Variable) -> None:
      self._kernel = kernel
  
imports: import math
  from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Union, List
  import numpy
  import tensorflow
label_desc: Use image node_id 3 for calling the _KernelFanInScaler obj's underlying member method code with example usage: obj.kernel(kernel) without return types