code: def new_fully_connected(self, name: str, output_count: int, relu=True, input_layer_name: str=None):
          
  
          with tf.variable_scope(name):
              input_layer = self.__network.get_layer(input_layer_name)
              vectorized_input, dimension = self.vectorize_input(input_layer)
  
              weights = self.__make_var('weights', shape=[dimension, output_count])
              biases = self.__make_var('biases', shape=[output_count])
              operation = tf.nn.relu_layer if relu else tf.nn.xw_plus_b
  
              fc = operation(vectorized_input, weights, biases, name=name)
  
          self.__network.add_layer(name, layer_output=fc)
docs: Creates a new fully connected layer.
  
          :param name: name for the layer.
          :param output_count: number of outputs of the fully connected layer.
          :param relu: boolean flag to set if ReLu should be applied at the end of this layer.
          :param input_layer_name: name of the input layer for this layer. If None, it will take the last added layer of
          the network.