Keras provides a full-featured model class called tensorflow.keras.Model. It inherits from tensorflow.keras.layers.Layer,
so a Keras model can be used and nested in the same way as Keras layers. Keras models come with extra functionality that makes them easy to train,
evaluate, load, save, and even train on multiple machines.
As the tensorflow.keras.Model class inherits from the 'tensorflow.keras.layers' you do not need to specify input_shape in
a subclassed model; this argument will be ignored.