CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
y33-j3T

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: y33-j3T/Coursera-Deep-Learning
Path: blob/master/Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning/Week 3 - Enchancing Vision with Convolutional Neural Networks/Excercise-3-Question.ipynb
Views: 13373
Kernel: Python 3

Exercise 3

In the videos you looked at how you would improve Fashion MNIST using Convolutions. For your exercise see if you can improve MNIST to 99.8% accuracy or more using only a single convolutional layer and a single MaxPooling 2D. You should stop training once the accuracy goes above this amount. It should happen in less than 20 epochs, so it's ok to hard code the number of epochs for training, but your training must end once it hits the above metric. If it doesn't, then you'll need to redesign your layers.

I've started the code for you -- you need to finish it!

When 99.8% accuracy has been hit, you should print out the string "Reached 99.8% accuracy so cancelling training!"

import tensorflow as tf from os import path, getcwd, chdir # DO NOT CHANGE THE LINE BELOW. If you are developing in a local # environment, then grab mnist.npz from the Coursera Jupyter Notebook # and place it inside a local folder and edit the path to that location path = f"{getcwd()}/../tmp2/mnist.npz"
config = tf.ConfigProto() config.gpu_options.allow_growth = True sess = tf.Session(config=config)
# GRADED FUNCTION: train_mnist_conv def train_mnist_conv(): # Please write your code only where you are indicated. # please do not remove model fitting inline comments. # YOUR CODE STARTS HERE class StopTrainingCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs={}): if logs.get('acc') >= 0.998: print('\nReached 99.8% accuracy so cancelling training!') self.model.stop_training = True callback = StopTrainingCallback() # YOUR CODE ENDS HERE mnist = tf.keras.datasets.mnist (training_images, training_labels), (test_images, test_labels) = mnist.load_data(path=path) # YOUR CODE STARTS HERE training_images = training_images.reshape([60000, 28, 28, 1]) training_images = training_images / 255.0 test_images = test_images.reshape([10000, 28, 28, 1]) test_images = test_images / 255.0 # YOUR CODE ENDS HERE model = tf.keras.models.Sequential([ # YOUR CODE STARTS HERE tf.keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D(2, 2), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D(2, 2), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') # YOUR CODE ENDS HERE ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # model fitting history = model.fit( # YOUR CODE STARTS HERE training_images, training_labels, epochs=20, callbacks=[callback] # YOUR CODE ENDS HERE ) # model fitting return history.epoch, history.history['acc'][-1]
_, _ = train_mnist_conv()
Epoch 1/20 60000/60000 [==============================] - 17s 285us/sample - loss: 0.1190 - acc: 0.9633 Epoch 2/20 60000/60000 [==============================] - 14s 230us/sample - loss: 0.0393 - acc: 0.9879 Epoch 3/20 60000/60000 [==============================] - 14s 230us/sample - loss: 0.0267 - acc: 0.9914 - loss: 0 Epoch 4/20 60000/60000 [==============================] - 14s 228us/sample - loss: 0.0188 - acc: 0.9938 Epoch 5/20 60000/60000 [==============================] - 14s 229us/sample - loss: 0.0149 - acc: 0.9952 Epoch 6/20 60000/60000 [==============================] - 14s 230us/sample - loss: 0.0112 - acc: 0.9964 Epoch 7/20 60000/60000 [==============================] - 14s 228us/sample - loss: 0.0087 - acc: 0.9969 Epoch 8/20 60000/60000 [==============================] - 14s 230us/sample - loss: 0.0078 - acc: 0.9973 Epoch 9/20 60000/60000 [==============================] - 14s 228us/sample - loss: 0.0068 - acc: 0.9976 Epoch 10/20 59648/60000 [============================>.] - ETA: 0s - loss: 0.0062 - acc: 0.9982 Reached 99.8% accuracy so cancelling training! 60000/60000 [==============================] - 14s 225us/sample - loss: 0.0061 - acc: 0.9982
# Now click the 'Submit Assignment' button above. # Once that is complete, please run the following two cells to save your work and close the notebook
%%javascript <!-- Save the notebook --> IPython.notebook.save_checkpoint();
%%javascript IPython.notebook.session.delete(); window.onbeforeunload = null setTimeout(function() { window.close(); }, 1000);