input: Write a function to create and train a Machine Learning model in Python that can recognize handwritten digits from 0 to 9. The function should return the trained model.
  import numpy as np
  import pandas as pd
  from tensorflow.keras.datasets import mnist
  from tensorflow.keras.layers import Dense, Input, Dropout
  from tensorflow.keras.models import Model
  from tensorflow.keras.utils import to_categorical
  
  def create_and_train_digit_recognition_model():
      # Load data
      (X_train, y_train), (X_test, y_test) = mnist.load_data()
  
      # Define the neural network model
      inputs = Input(shape=(28,28,))
      h1 = Dense(64, activation='relu')(inputs)
      h2 = Dropout(0.5)(h1)
      outputs = Dense(10, activation='softmax')(h2)
      model = Model(inputs=inputs, outputs=outputs)
      model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  
      # Data pre-processing
      X_train = X_train.reshape(60000, 784)
      X_test = X_test.reshape(10000, 784)
      X_train = X_train.astype('float32')
      X_train /= 255
      X_test = X_test.astype('float32')
      X_test /= 255
      y_train = to_categorical(y_train, num_classes=10)
      y_test = to_categorical(y_test, num_classes=10)
  
      # Fit the model
      model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=128)
      return model
  
  # Test cases
  assert create_and_train_digit_recognition_model() is not None
  assert hasattr(create_and_train_digit_recognition_model(), 'predict')
output: def create_and_train_digit_recognition_model():
      (X_train, y_train), (X_test, y_test) = mnist.load_data()
      inputs = Input(shape=(28,28,))
      h1 = Dense(64, activation='relu')(inputs)
      h2 = Dropout(0.5)(h1)
      outputs = Dense(10, activation='softmax')(h2)
      model = Model(inputs=inputs, outputs=outputs)
      model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
      X_train = X_train.reshape(60000, 784)
      X_test = X_test.reshape(10000, 784)
      X_train = X_train.astype('float32')
      X_train /= 255
      X_test = X_test.astype('float32')
      X_test /= 255
      y_train = to_categorical(y_train, num_classes=10)
      y_test = to_categorical(y_test, num_classes=10)
      model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=128)
      return model