input: Write a function to generate a Machine Learning model in Python that recognizes handwritten digits from 0 to 9 using the TensorFlow and Keras libraries. The function should load the MNIST dataset, preprocess the data, define a neural network model with an input layer, hidden layers, and an output layer, compile the model, and fit the model on the training data. The function should return the fitted model.
  assert generate_digit_recognition_model().history['accuracy'][-1] > 0.9
output: 
  def generate_digit_recognition_model():
      import tensorflow as tf
      from tensorflow.keras.datasets import mnist
      from tensorflow.keras.models import Sequential
      from tensorflow.keras.layers import Dense, Flatten
      from tensorflow.keras.utils import to_categorical
  
      (x_train, y_train), (x_test, y_test) = mnist.load_data()
      x_train = x_train / 255.0
      x_test = x_test / 255.0
      y_train = to_categorical(y_train, 10)
      y_test = to_categorical(y_test, 10)
  
      model = Sequential([
          Flatten(input_shape=(28, 28)),
          Dense(128, activation='relu'),
          Dense(64, activation='relu'),
          Dense(10, activation='softmax')
      ])
  
      model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
      model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
  
      return model
  