human
2. Modify code to be more flexible
The code for our Neural Network example above assumes an input layer size of 2, hidden layer size of 3 and an output layer size of 1.  
&#9989.
DO THIS: Modify the code in Section 1 above so that the user can specify these as inputs when creating the Neural_Network object.  The default values should stay the same. Rerun the above example to make sure it still works.
assistant
#Here is the Python program you requested.
class Neural_Network(Neural_Network):
    def __init__(self,insize, outsize, hiddensize):
        #Define Hyperparameters
        self.inputLayerSize = insize
        self.outputLayerSize = outsize
        self.hiddenLayerSize = hiddensize

        #Weights (parameters)
        self.W1 = np.random.randn(self.inputLayerSize,self.hiddenLayerSize)
        self.W2 = np.random.randn(self.hiddenLayerSize,self.outputLayerSize)

#Untrained Random Network
NN = Neural_Network(2,1,5)
y1 = NN.forward(X)
print("Untrained Output", y1)

T = trainer(NN)
T.train(X,y)

#Trained Network
y2 = NN.forward(X)
print("Trained Output",y2)

print(MSE(y, y1))
print(MSE(y, y2))