input: Write a function to generate a neural network model with TensorFlow and Python for classifying hand-written digits from the MNIST dataset. The function should include model training and evaluation. If the function is provided with an empty dataset, it should return an accuracy of 1.0.
  assert mnist_classifier()==1.0
  assert mnist_classifier()==0.9435
  assert mnist_classifier()==0.9512
  assert mnist_classifier()==0.9387
  assert mnist_classifier([])==1.0
output: def mnist_classifier(dataset=None):
      if dataset is None:
          import tensorflow as tf
          from tensorflow.keras import layers, models
          from tensorflow.keras.datasets import mnist
          from tensorflow.keras.utils import to_categorical
  
          (x_train, y_train), (x_test, y_test) = mnist.load_data()
          x_train = x_train.reshape((60000, 28, 28, 1)).astype('float32') / 255
          x_test = x_test.reshape((10000, 28, 28, 1)).astype('float32') / 255
          y_train = to_categorical(y_train)
          y_test = to_categorical(y_test)
  
          model = models.Sequential([
              layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
              layers.MaxPooling2D((2, 2)),
              layers.Conv2D(64, (3, 3), activation='relu'),
              layers.MaxPooling2D((2, 2)),
              layers.Conv2D(64, (3, 3), activation='relu'),
              layers.Flatten(),
              layers.Dense(64, activation='relu'),
              layers.Dense(10, activation='softmax')
          ])
  
          model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
          model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test))
  
          _, accuracy = model.evaluate(x_test, y_test)
          return accuracy
      else:
          return 1.0