docs: def compile(self, session=None):
          """
          Compile is two phase operation: at first it calls `build` method and then
          intializes the node for passed session. The policy around `session` is defined
          inside the `initialize` method.
  
          :param session: TensorFlow session used for initializing. If the node is built the
              session's graph value must be equal to the node tensor's graph.
  
          :raises: GPflowError exception if session's graph is different from the graph
              used by node tensors.
          """
          session = self.enquire_session(session)
          if self.is_built_coherence(session.graph) is Build.NO:
              with session.graph.as_default():
                  self.build()
          self.initialize(session, force=True)