title: TypeError: 'NoneType' object is not callable Tensorflow
body: <p>Currently working on a regression problem with <code>tf2.0</code>. In order to prepare my dataset, I have used the following code:</p>
  <pre><code>train = tf.data.Dataset.from_tensor_slices(([train_X], [train_y])).batch(BATCH_SIZE).repeat()
  val = tf.data.Dataset.from_tensor_slices(([val_X], [val_y])).batch(BATCH_SIZE).repeat() 
  </code></pre>
  <p>Now if we look at their shapes:</p>
  <pre><code>&lt;RepeatDataset shapes: ((None, 42315, 20), (None, 42315)), types: (tf.float64, tf.float64)&gt;
  &lt;RepeatDataset shapes: ((None, 2228, 20), (None, 2228)), types: (tf.float64, tf.float64)&gt;
  </code></pre>
  <p>Which I believe are fairly right. Now if I run these through the model as shown below, they seem to train and work just fine:</p>
  <pre><code>simple_lstm_model = tf.keras.models.Sequential([
      tf.keras.layers.LSTM(8),
      tf.keras.layers.Dense(1)
  ])
  
  simple_lstm_model.compile(optimizer='adam', loss='mae')
  
  history = simple_lstm_model.fit(train, epochs=EPOCHS,
                        steps_per_epoch=EVALUATION_INTERVAL,
                        validation_data=val, validation_steps=50)
  </code></pre>
  <p>However, when I make my model slightly more complicated and try to compile it, it gives me the error which is the heading of this question. Details about the error are at the very bottom of this question. The complicated model is shown below:</p>
  <pre><code>comp_lstm = tf.keras.models.Sequential([
      tf.keras.layers.LSTM(64),
      tf.keras.layers.LSTM(64),
      tf.keras.layers.LSTM(64),
      tf.keras.layers.Dense(1)
  ])
  
  comp_lstm.compile(optimizer='adam', loss='mae')
  
  history = comp_lstm.fit(train, 
                        epochs=EPOCHS,
                        steps_per_epoch=EVALUATION_INTERVAL,
                        validation_data=val, validation_steps=50)
  </code></pre>
  <p>I, infact, wanted to try a bidirectional LSTM but it seems like a multiple stack of LSTMs itself is giving me the issues as stated below.</p>
  <hr />
  <h2>The Error</h2>
  <pre><code>TypeError                                 Traceback (most recent call last)
  &lt;ipython-input-21-8a86aab8a730&gt; in &lt;module&gt;
        2 EPOCHS = 20
        3 
  ----&gt; 4 history = comp_lstm.fit(train, 
        5                       epochs=EPOCHS,
        6                       steps_per_epoch=EVALUATION_INTERVAL,
  
  ~/python_envs/p2/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
       64   def _method_wrapper(self, *args, **kwargs):
       65     if not self._in_multi_worker_mode():  # pylint: disable=protected-access
  ---&gt; 66       return method(self, *args, **kwargs)
       67 
       68     # Running inside `run_distribute_coordinator` already.
  
  ~/python_envs/p2/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
      846                 batch_size=batch_size):
      847               callbacks.on_train_batch_begin(step)
  --&gt; 848               tmp_logs = train_function(iterator)
      849               # Catch OutOfRangeError for Datasets of unknown size.
      850               # This blocks until the batch has finished executing.
  
  ~/python_envs/p2/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in __call__(self, *args, **kwds)
      578         xla_context.Exit()
      579     else:
  --&gt; 580       result = self._call(*args, **kwds)
      581 
      582     if tracing_count == self._get_tracing_count():
  
  ~/python_envs/p2/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
      609       # In this case we have created variables on the first call, so we run the
      610       # defunned version which is guaranteed to never create variables.
  --&gt; 611       return self._stateless_fn(*args, **kwds)  # pylint: disable=not-callable
      612     elif self._stateful_fn is not None:
      613       # Release the lock early so that multiple threads can perform the call
  
  TypeError: 'NoneType' object is not callable
  </code></pre>