首页 > 其他分享 >CIFAR-10 Implementing a Convolutional Neural Network

CIFAR-10 Implementing a Convolutional Neural Network

时间:2024-08-02 20:29:39浏览次数:16  
标签:Convolutional 10 layer Network Keras rate same Add using

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.

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 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.

 

 

 

标签:Convolutional,10,layer,Network,Keras,rate,same,Add,using
From: https://www.cnblogs.com/vx-codehelp/p/18339542

相关文章

  • 科大讯飞lumie10和t20区别 选哪个好
    一、不同点1.科大读飞lumie10和t20的便携性是不一样的,科大讯飞lumie10采用的是插电式供电,而t20采用的内置电池供电(电池容量是10150mah,支持18w快充)。2.科大讯飞lumie10和t20的设计是不一样的,科大讯飞lumie10采用立式设计,而t20采用平板式设计。3.科大讯飞lumie10和t20的屏幕是不......
  • ESP32-S3+1.3寸OLED+SH1106
    简介:事情就是为了看大一点的屏幕,买了1.3寸的OLED屏幕(4pin),结果发现是SH1106驱动。试了很多方法,终于点亮了这个oled。资料下载:1.首先就是下载普中资料:普中科技-各型号产品资料下载链接_公司新闻_新闻资讯_深圳市普中科技有限公司(prechin.cn)2.根据型号,我直接是ESP32-S3,下......
  • 深入解析与实战:解决 npm ERR! network ‘proxy‘ 配置问题
    在日常的前端开发工作中,使用npm(NodePackageManager)进行依赖管理已经成为了常态。然而,在某些情况下,我们可能会遇到网络配置问题导致的错误信息,比如npmERR!network'proxy'configissetproperly。本文将详细介绍如何解决这一问题,并通过实际案例演示正确的配置方法。......
  • 苹果cmsv10酷黑模板模板 视频网站源码自适应模板【带有广告位】
    探索苹果CMSV10酷黑模板:打造高端自适应视频网站的完美选择在当今数字化时代,视频网站已成为人们休闲娱乐、获取信息的重要渠道之一。而一个精美、高效且用户友好的视频网站模板,则是吸引访客、提升用户体验的关键。今天,我们将带您深入了解苹果CMSV10的酷黑模板,这款集美观性、......
  • 洛谷 P1080 [NOIP2012 提高组] 国王游戏
    一道非常有挑战性的题目(~太难了~)。这题我们可以用贪心来做。思路:首先我们定义一个结构体struct,里面放的是每个人左手和右手的数字。接着我们需要一种排列方式,使得获得奖赏最多的大臣,所获奖赏尽可能的少;这句话听起来是不是听绕口?意思就是说得到奖赏数量最多,但加起来的总奖赏......
  • 科大讯飞学习机T30 UItra和科大讯飞学习机LUMIE10区别对比
    科大讯飞T30UItraAI学习机科大讯飞T30UItraAI学习机内置了星火大模型,主打“AI一对一”,支持AI答疑辅导、AI提优课、幼小初高全科提升等功能。其内置的屏幕尺寸为14.7英寸,分辨率高达3K,刷新率为120Hz,PPI为247。此外,该产品还配备了行业首款星闪AI手写笔,并且支持超万级压感和磁吸......
  • Pytorch笔记|小土堆|P10-13|transforms
    transforms对图像进行改造最靠谱的办法:根据help文件自行学习transforms包含哪些工具(类)以及如何使用————————————————————————————————————自学一个类时,应关注:1、如何使用各种工具(类)的使用思路:创建对象(实例化)——>传入参数,调用函数(如有__......
  • 10年工龄的90后程序员折腾博客的这些年
    1.2011.09.142011.09.14,当时还在读大二的我在CSDN写了第一篇技术博客《Java中的50个关键字)》。当时,在百度搜索技术问题的时候,经常能搜到CSDN里大牛写的文章,觉得非常厉害,非常崇拜他们。然后就向他们学习,尝试着自己也写一写博客。第一篇博客,来回修修改改写了两周,因为真的不知......
  • BZOJ2839/LG10596 集合计数 题解(二项式反演+扩展欧拉定理)
    题目大意:一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得它们的交集的元素个数为\(K\),求取法的方案数,答案模\(10^9+7\)。为表述方便,不妨设这\(i\)个元素分别为\(1\simn\)。前置知识:二项式反演。考虑设\(g(......
  • 吴恩达深度学习deeplearning.ai学习笔记(一)3.9 3.10 3.11
    3.9神经网络的梯度下降法对于单隐层神经网络而言,主要参数就是,并且输入特征的维度可以记为,第一层有个隐藏单元,第二层有个输出单元,目前仅仅见过只有一个输出单元的情况;的维度是,的维度是,的维度是,的维度是,成本函数为:训练神经网络时,随机初始化参数很重要,而不是全令其为0;每个梯......