human
Write me a the Python program you requested given the following:
I am working on the file "18-11-22-Deep-Learning-with-PyTorch/02-Introduction to PyTorch/Part 2 - Neural Networks in PyTorch.ipynb".
The first task is:
Activation functions
So far we've only been looking at the softmax activation, but in general any function can be used as an activation function. The only requirement is that for a network to approximate a non-linear function, the activation functions must be non-linear. Here are a few more examples of common activation functions: Tanh (hyperbolic tangent), and ReLU (rectified linear unit).
<img src="assets/activation.png" width=700px>
In practice, the ReLU function is used almost exclusively as the activation function for hidden layers.
Your Turn to Build a Network
<img src="assets/mlp_mnist.png" width=600px>

Exercise: Create a network with 784 input units, a hidden layer with 128 units and a ReLU activation, then a hidden layer with 64 units and a ReLU activation, and finally an output layer with a softmax activation as shown above. You can use a ReLU activation with the nn.ReLU module or F.relu function.
Can you write Python program for it?
assistant
#Here is the Python program you requested.

## Your solution here
class MyNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        
        # Network parameters
        self.h1 = nn.Linear(in_features=784,
                            out_features=128)
        self.h2 = nn.Linear(in_features=128,
                            out_features=64)
        self.out = nn.Linear(in_features=64,
                             out_features=10)
        # Define sigmoid activation and softmax output 
        self.relu = nn.ReLU()
        self.softmax = nn.Softmax(dim=1)
        
    def forward(self, x: torch.tensor):
        x = self.h1(x)
        x = self.relu(x)
        x = self.h2(x)
        x = self.relu(x)
        x = self.out(x)
        x = self.softmax(x)
        return x        

model = MyNetwork()
model