Exercise 3 - Convolutions

发布时间 2023-11-30 22:58:47作者: 跑调的弦

Exercise 3 - Convolutions

在视频中,您了解了如何使用卷积来改进时尚 MNIST。在练习中,请看您能否仅使用一个卷积层和一个 MaxPooling 2D 将 MNIST 的准确率提高到 99.8% 或更高。一旦准确率超过这一水平,就应停止训练。这应该在 20 个历元以内完成,因此可以硬性规定训练的历元数,但一旦达到上述指标,就必须结束训练。如果达不到,你就需要重新设计你的层。
我已经开始为你编写代码了,你需要完成它!
当达到 99.8% 的准确率时,你应该打印出字符串 "达到 99.8% 的准确率,因此取消训练!"


import tensorflow as tf

# YOUR CODE STARTS HERE
class myCallback(tf.keras.callbacks.Callback):
  def on_epoch_end(self, epoch, logs={}):
    if(logs.get('accuracy')>0.998):
      print("\nReached 99.8% accuracy so cancelling training!")
      self.model.stop_training = True

callbacks = myCallback()
# YOUR CODE ENDS HERE

mnist = tf.keras.datasets.mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()

# 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(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
  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
])

# YOUR CODE STARTS HERE
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(training_images, training_labels, epochs=10, callbacks=[callbacks])
# YOUR CODE ENDS HERE

image