title: Why keras use "call" instead of __call__?
body: <p>I fond the following code in (<a href="https://www.tensorflow.org/tutorials/eager/custom_layers" rel="noreferrer">https://www.tensorflow.org/tutorials/eager/custom_layers</a>)</p>
  
  <pre><code>class MyDenseLayer(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
      super(MyDenseLayer, self).__init__()
      self.num_outputs = num_outputs
  
    def build(self, input_shape):
      self.kernel = self.add_variable("kernel",
                                  shape=[int(input_shape[-1]),
                                         self.num_outputs])
  
    def call(self, input):
      return tf.matmul(input, self.kernel)
  </code></pre>
  
  <p>The last two lines is call method, while it does not like usual python class method  <strong>call</strong> with two underlines. Is any differences between those? </p>