Deep Neural Network - Application 2layer
Deep Neural Network - Application 2layer
Now that you are familiar with the dataset, it is time to build a deep neural network to distinguish cat images
from non-cat images.
You will then compare the performance of these models, and also try out different values for L.
In [6]:
In [7]:
Arguments:
X -- input data, of shape (n_x, number of examples)
Y -- true "label" vector (containing 0 if cat, 1 if non-cat), of shape (1, number o
f examples)
layers_dims -- dimensions of the layers (n_x, n_h, n_y)
num_iterations -- number of iterations of the optimization loop
learning_rate -- learning rate of the gradient descent update rule
print_cost -- If set to True, this will print the cost every 100 iterations
Returns:
parameters -- a dictionary containing W1, W2, b1, and b2
"""
np.random.seed(1)
grads = {}
costs = [] # to keep track of the cost
m = X.shape[1] # number of examples
(n_x, n_h, n_y) = layers_dims
# Forward propagation: LINEAR -> RELU -> LINEAR -> SIGMOID. Inputs: "X, W1, b
1". Output: "A1, cache1, A2, cache2".
### START CODE HERE ### (≈ 2 lines of code)
A1, cache1 = linear_activation_forward(X, W1, b1, 'relu')
A2, cache2 = linear_activation_forward(A1, W2, b2, 'sigmoid')
### END CODE HERE ###
# Compute cost
### START CODE HERE ### (≈ 1 line of code)
cost = compute_cost(A2, Y)
### END CODE HERE ###
# Backward propagation. Inputs: "dA2, cache2, cache1". Outputs: "dA1, dW2, db2;
also dA0 (not used), dW1, db1".
https://wvyomaulmfiajiopfkeeoo.coursera-apps.org/nbconvert/html/Week 4/Deep Neural Network Application%3A Image Classification/Deep Ne… 9/19
23/12/2019 Deep Neural Network - Application v8
# Update parameters.
### START CODE HERE ### (approx. 1 line of code)
parameters = update_parameters(parameters, grads, learning_rate)
### END CODE HERE ###
plt.plot(np.squeeze(costs))
plt.ylabel('cost')
plt.xlabel('iterations (per tens)')
plt.title("Learning rate =" + str(learning_rate))
plt.show()
return parameters
Run the cell below to train your parameters. See if your model runs. The cost should be decreasing. It may
take up to 5 minutes to run 2500 iterations. Check if the "Cost after iteration 0" matches the expected output
below, if not click on the square (⬛) on the upper bar of the notebook to stop the cell and try to find your
error.
In [8]:
Expected Output:
**...** ...
Good thing you built a vectorized implementation! Otherwise it might have taken 10 times longer to train this.
Now, you can use the trained parameters to classify images from the dataset. To see your predictions on the
training and test sets, run the cell below.
In [9]:
Accuracy: 1.0
Expected Output:
**Accuracy** 1.0
In [10]:
Accuracy: 0.72
Expected Output:
**Accuracy** 0.72
Note: You may notice that running the model on fewer iterations (say 1500) gives better accuracy on the test
set. This is called "early stopping" and we will talk about it in the next course. Early stopping is a way to
prevent overfitting.
Congratulations! It seems that your 2-layer neural network has better performance (72%) than the logistic
regression implementation (70%, assignment week 2). Let's see if you can do even better with an L-layer
model.