Coding 4: Implementing a Convolutional Neural Network for CIFAR-10 using KerasPython

Java Python Coding Assignment 4: Implementing a Convolutional Neural Network for CIFAR-10 using Keras

July 28, 2024

1 Overview

In this assignment, you will implement a Convolutional Neural Network (CNN) to classify images from the CIFAR-10 dataset using the Keras library.  Follow the instructions step-by-step to build, compile, train, and evaluate your model.

2 Instructions

2.1 Step 1: Import Required Libraries

Import the necessary libraries: numpy, matplotlib.pyplot, and required mod- ules from keras. Refer to the Keras documentation for more details.

2.2 Step 2: Load and Preprocess the Dataset

•  Load the CIFAR-10 dataset using keras .datasets .cifar10 .load data().

•  Normalize the images by converting pixel values to the range [0, 1]. This can be done by casting the image data to float32 and dividing by 255.0.

• One-hot encode the labels using the appropriate function from keras .utils.

•  Refer to the Keras dataset documentation for more details.

2.3 Step 3: Data Augmentation

• Implement data augmentation using ImageDataGenerator from keras .preprocessing .image.

• Set parameters for the data augmentation:

rotation range=15: Specify the degree range for random rotations.

width shift range=0 .1: Specify the fraction of total width for hor- izontal shift.

height shift range=0 .1:   Specify the fraction of total height for vertical shift.

horizontal flip=True:  Set to True to randomly flip inputs hori- zontally.

•  Fit the data generator on training images using  .fit(train images).

• Refer to the Keras ImageDataGenerator documentation for more details.

2.4 Step 4: Define the Learning Rate Scheduler

• Implement a learning rate scheduler using LearningRateScheduler from keras .callbacks.

•  Define a function lr schedule that adjusts the learning rate at specific epochs. The function should reduce the learning rate by half after epoch

3 and epoch 6.

•  Pass the learning rate schedule function to LearningRateScheduler(lr schedule).

• Refer to the Keras LearningRateScheduler documentationfor more details.

2.5    Step 5:  Implement ReduceLROnPlateau Callback

• Implement ReduceLROnPlateau callback to reduce the learning rate when a metric has stopped improving.

• Use the following parameters:

monitor=’val loss’ : Monitor the validation loss.

factor=0.5: Reduce the learning rate by half.

patience=2:  Number of epochs with no improvement after which learning rate will be reduced.

min lr=1e-6: Lower bound on the learning rate.

verbose=1: Enable verbosity.

• Refer to the Keras ReduceLROnPlateau documentation for more details.

2.6    Step 6: Build the CNN Model

• Build the CNN model using Sequential from keras .models.

• Add the following layers in sequence:

Conv2D(32,  (3,  3),  activation=’relu’,  padding=’same’,  input shape=(32,

32,  3)): Add a 2D convolution layer with 32 filters, a kernel size of 3x3, ReLU activation, and same padding.

BatchNormalization(): Add a batch normalization layer.

Conv2D(32,  (3,  3),  activation=’relu’,  padding=’same’): Add another 2D convolution layer with the same specifications as above.

BatchNormalization(): Add another batch normalization layer.

MaxPooling2D((2,  2)):  Add a max pooling layer with a pool size of 2x2.

Dropout(0.2): Add a dropout layer with a rate of 0.2.

Conv2D(64,  (3,  3),  activation=’relu’,  padding=’same’): Add a 2D convolution layer with 64 filters, a kernel size of 3x3, ReLU ac-   tivation, and same padding.

BatchNormalization(): Add a batch normalization layer.

Conv2D(64,  (3,  3),  activation=’relu’,  padding=’same’): Add&nb Coding Assignment 4: Implementing a Convolutional Neural Network for CIFAR-10 using KerasPython sp;another 2D convolution layer with the same specifications as above.

BatchNormalization(): Add another batch normalization layer.

MaxPooling2D((2,  2)):  Add a max pooling layer with a pool size of 2x2.

Dropout(0.3): Add a dropout layer with a rate of 0.3.

Conv2D(128,  (3,  3),  activation=’relu’,  padding=’same’): Add a 2D convolution layer with 128 filters, a kernel size of 3x3, ReLU ac-

tivation, and same padding.

BatchNormalization(): Add a batch normalization layer.

Conv2D(128,  (3,  3),  activation=’relu’,  padding=’same’): Add another 2D convolution layer with the same specifications as above.

BatchNormalization(): Add another batch normalization layer.

MaxPooling2D((2,  2)):  Add a max pooling layer with a pool size of 2x2.

Dropout(0.4): Add a dropout layer with a rate of 0.4.

Flatten(): Add aflatten layer to convert 2D matrices to a 1D vector.

Dense(256,  activation=’relu’): Add a dense layer with 256 units and ReLU activation.

BatchNormalization(): Add a batch normalization layer.

Dropout(0.4): Add a dropout layer with a rate of 0.4.

Dense(10,  activation=’softmax’):  Add a final dense layer with

10 units and softmax activation for classification.

• Refer to the Keras Sequential model documentation for more details.

2.7    Step 7:  Implement EarlyStopping Callback

• Implement EarlyStopping callback to stop training when a monitored metric has stopped improving.

• Use the following parameters:

monitor=’val loss’ : Monitor the validation loss.

patience=5:  Number of epochs with no improvement after which training will be stopped.

restore best weights=True:  Restore the model weights from the epoch with the best value of the monitored quantity.

• Refer to the Keras EarlyStopping documentation for more details.

2.8 Step 8: Compile the Model

•  Compile the model using the compile method.

• Use the following parameters:

optimizer=’adam’ : Set the optimizer to Adam.

loss=’categorical crossentropy’ :  Set the loss function to cate- gorical crossentropy.

metrics=[’accuracy’]: Set the metric to accuracy.

• Refer to the Keras model compile documentation for more details.

2.9 Step 9: Train the Model

• Train the model using the fit method with the data generator.

• Use the following parameters:

batch size=128: Set the batch size to 128.

epochs=10:  Set the number of epochs to 10.

validation data=(test images,  test labels): Pass the test im- ages and labels for validation.

callbacks=[lr scheduler,  reduce lr,  early stopping]: Pass the learning rate scheduler, reduce learning rate on plateau, and early    stopping callbacks.

• Refer to the Keras model fit documentation for more details.

2.10 Step 10: Evaluate the Model

• Evaluate the model using the evaluate method on the test dataset.

• Print the test accuracy.

• Refer to the Keras model evaluate documentation for more details.

2.11    Step 11:  Plot the Training and Validation Metrics

• Plot the training and validation accuracy and loss using matplotlib.

•  Create two subplots: one for accuracy and one for loss.

•  Use the plt .subplot, plt.plot, plt.legend, and plt .title functions to create the plots.

• Refer to the Matplotlib documentation for more details.

Submission

Submit your Jupyter notebook on Canvas. Ensure that your code is well- documented and includes explanations of each step.  The total points for this assignment are 50. The deadline for submission is August 5th at 11:59 pm         

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值