human
2. Classfication Model
Ww would define a simple Convolutional Neural Network to classify MNIST
2.1 Short indroduction of MNIST
The MNIST database (Modified National Institute of Standards and Technology database) is a large database of handwritten digits that is commonly used for training various image processing systems. 
The MNIST database contains 60,000 training images and 10,000 testing images. Each class has 5000 traning images and 1000 test images. 
Each image is 32x32.
And they look like images below.

2.2 Define A FeedForward Neural Network
We would fefine a FeedForward Neural Network with 3 hidden layers. 
Each layer is followed a activation function, we would try sigmoid and relu respectively. 
For simplicity, each hidden layer has the equal neurons. 
In reality, however, we would apply different amount of neurons in different hidden layers.
2.2.1 Activation Function
There are many useful activation function and you can choose one of them to use. Usually we use relu as our network function.
2.2.1.1 ReLU
Applies the rectified linear unit function element-wise
\begin{equation}
    ReLU(x) = max(0, x)
\end{equation}

2.2.1.2 Sigmoid
Applies the element-wise function:
\begin{equation}
Sigmoid(x)=\frac{1}{1+e^{-x}}  
\end{equation}

2.2.2 Network's Input and output
Inputs: For every batch 

[batchSize, channels, height, width] -> [B,C,H,W]

Outputs: prediction scores of each images, eg. [0.001, 0.0034 ..., 0.3]

[batchSize, classes]

Network Structure
Inputs                Linear/Function        Output
    [128, 1, 28, 28]   -&gt.
Linear(28*28, 100) -&gt.
[128, 100]  # first hidden lyaer
                       -&gt.
ReLU               -&gt.
[128, 100]  # relu activation function, may sigmoid
                       -&gt.
Linear(100, 100)   -&gt.
[128, 100]  # second hidden lyaer
                       -&gt.
ReLU               -&gt.
[128, 100]  # relu activation function, may sigmoid
                       -&gt.
Linear(100, 100)   -&gt.
[128, 100]  # third hidden lyaer
                       -&gt.
ReLU   ..."
Please write code following the instructions in jupyter notebook style.

Write me a code to 2?
assistant
#Here is code to 2.

class FeedForwardNeuralNetwork(nn.Module):
    """
    Inputs                Linear/Function        Output
    [128, 1, 28, 28]   -> Linear(28*28, 100) -> [128, 100]  # first hidden lyaer
                       -> ReLU               -> [128, 100]  # relu activation function, may sigmoid
                       -> Linear(100, 100)   -> [128, 100]  # second hidden lyaer
                       -> ReLU               -> [128, 100]  # relu activation function, may sigmoid
                       -> Linear(100, 100)   -> [128, 100]  # third hidden lyaer
                       -> ReLU               -> [128, 100]  # relu activation function, may sigmoid
                       -> Linear(100, 10)    -> [128, 10]   # Classification Layer                                                          
   """
    def __init__(self, input_size, hidden_size, output_size, activation_function='RELU'):
        super(FeedForwardNeuralNetwork, self).__init__()
        self.use_dropout = False
        self.use_bn = False
        self.hidden1 = nn.Linear(input_size, hidden_size)  # Linear function 1: 784 --> 100 
        self.hidden2 = nn.Linear(hidden_size, hidden_size) # Linear function 2: 100 --> 100
        self.hidden3 = nn.Linear(hidden_size, hidden_size) # Linear function 3: 100 --> 100
        # Linear function 4 (readout): 100 --> 10
        self.classification_layer = nn.Linear(hidden_size, output_size)
        self.dropout = nn.Dropout(p=0.5) # Drop out with prob = 0.5
        self.hidden1_bn = nn.BatchNorm1d(hidden_size) # Batch Normalization 
        self.hidden2_bn = nn.BatchNorm1d(hidden_size)
        self.hidden3_bn = nn.BatchNorm1d(hidden_size)
        
        # Non-linearity
        if activation_function == 'SIGMOID':
            self.activation_function1 = nn.Sigmoid()
            self.activation_function2 = nn.Sigmoid()
            self.activation_function3 = nn.Sigmoid()
        elif activation_function == 'RELU':
            self.activation_function1 = nn.ReLU()
            self.activation_function2 = nn.ReLU()
    ...