code: def new_softmax(self, name, axis, input_layer_name: str=None):
          
          input_layer = self.__network.get_layer(input_layer_name)
  
          if LooseVersion(tf.__version__) < LooseVersion("1.5.0"):
              max_axis = tf.reduce_max(input_layer, axis, keep_dims=True)
              target_exp = tf.exp(input_layer - max_axis)
              normalize = tf.reduce_sum(target_exp, axis, keep_dims=True)
          else:
              max_axis = tf.reduce_max(input_layer, axis, keepdims=True)
              target_exp = tf.exp(input_layer - max_axis)
              normalize = tf.reduce_sum(target_exp, axis, keepdims=True)
  
          softmax = tf.div(target_exp, normalize, name)
  
          self.__network.add_layer(name, layer_output=softmax)
docs: Creates a new softmax layer
          :param name: name to set for the layer
          :param axis:
          :param input_layer_name: name of the input layer for this layer. If None, it will take the last added layer of
          the network.