docstr: returns a tensorflow dense layer
  :param input_layer: previous layer
  :param name: layer name
  :return: dense layer
docstr_tok: ["returns","a","tensorflow","dense","layer",":","param","input_layer",":","previous","layer",":","param","name",":","layer","name",":","return",":","dense","layer"]
code: def __call__(
      self,
      input_layer,
      name: str = None,
      kernel_initializer=None,
      bias_initializer=None,
      activation=None,
      is_training=None,
  ):
      """
      returns a tensorflow dense layer
      :param input_layer: previous layer
      :param name: layer name
      :return: dense layer
      """
      if bias_initializer is None:
          bias_initializer = tf.zeros_initializer()
      return tf.layers.dense(
          input_layer,
          self.units,
          name=name,
          kernel_initializer=kernel_initializer,
          activation=activation,
          bias_initializer=bias_initializer,
      )
  
imports: import math
  from types import FunctionType
  import tensorflow
  from rl_coach.architectures import layers
  from rl_coach.architectures.tensorflow_components import utils
label_desc: Use image node_id 2 for calling the Dense obj's underlying member method code with example usage: obj.__call__(input_layer, name, kernel_initializer, bias_initializer, activation, is_training) and returns: tf