卷积神经网络的基本结构,卷积神经网络的结构
个人资料
我最近的一篇文章是关于卷积网络,它的工作和组成:这篇文章使用卷积神经网络进行图像分类,详细了解了所有的步骤。所以,如果你不熟悉这个,请继续读下去。
简单来说,CNN是一种深度学习算法,是适合图像和视频的神经网络类型之一。通过CNN可以实现各种功能。包括图像分类、图像识别、目标检测、人脸识别等。
今天,我们将在3358www.Sina.com/,上运行CIFAR10 数据集,这是Tensorflow库的一部分。它由船只、青蛙、飞机、狗、汽车和其他物体的图像组成。这个数据集有60,000幅彩色图像和10个标签。现在让我们进入代码部分。
# importingnecessarylibrariesimportnumpyasnpimportmatplotlib . pyplotasplt % matplotlibinline # implementto convertetocategoricaldatafromtenorflow . keras . utilsportto _ category # ibrariesforbuildingmodelfromtensorflow . keras . modelsimportsequentialfromtensorflow . keras . layersimportdense,Conv2D,keras . layersimportdense flattenfromtensorflow . keras . datasetsimportcifar 10 #加载数据(x _ train,k
我们的训练数据有5万张图像,测试数据有1万张图像,大小为32*32,3个通道,即RGB(红绿蓝)。
# checkingthelabelsnp . unique(y _ train))
# firsmageoftraining data PLT . subplot(121)PLT . im show(x _ train[0])PLT . title(tag:{ } 。格式))
#可视化前20个图像inthedatasetforiinrange(20):# subplot PLT . subplot(5,5,I 1)# plotttingpixeldatappllot
数据预处理只能执行两步数据预处理。图像分类和首先是缩放图像的像素值到0到1之间。
# scalethedatatoliebetween 0 to 1x _ train=x _ train/255 x _ test=x _ test/255 print(
# reshapingtraining和testlablesot1 dy _ train=y _ train . shape(-1,)y _ test=y _ test . shape(-1,)现在我们来建立一个CNN模型。
模型构建如前所述,深度学习模型的构建分为五个步骤:模型定义、编译、拟合、模型评估和预测。这也是在这里进行的。
1:model model=sequential(# addingfirstcolutionlayermodel . add(conv2d)32,(3,3),Activation= relu definition 3))addingmaxpoolinglayermodel . add(maxpool 2d(2,2))addinganothervolutionlayermodel . add)conv2d(64,
Add (dense (216,activation= Relu )# addingoutlayermodel . add(dense(10,activation= softmax ))我们添加了第一个带有 32 个大小为 (3*3) 的过滤器的卷积层,使用的激活函数是Relu,为模型提供输入形状。
接下来添加了大小为 (2*2)的Max Pooling 层。最大化池有助于减少维度。请参考:3359 www . analyticsvidhya . com/blog/2021/08/初学者-进化神经网络实现指南-python/
然后我们添加了一个大小为(3*3)的64个滤镜的卷积层,和一个大小为(2*2)的最大池化层。
下一步,我们将这些层展平以转移到密集层,并添加了一个具有216个神经元的密集层。
最后,输出层增加了一个softmax激活函数,因为我们有10个标签。
第二步:编译model.pile (optimizer= RMSProp ,loss= sparse _ category _ cross entropy ,metrics=[accuracy])第三步:拟合model.fit (x _ train,y _ train,epochs=10)
如上图,我们的准确率是89%,损耗是0.31。让我们看看测试数据的准确性。
第4步:评估模型
测试数据的准确率是69%,和训练数据相比是很低的,意味着我们的模型过度拟合。。
第五步:做一个预测pred=model。predict(x _ test)# printinghesilementfrompredicteddataprint(pred[0])# printinghesindexofprint( index:,np.argmax (pred [0]))
因此,预测函数给出了所有10个标签的概率值,概率最高的标签就是最终的预测。在我们的示例中,我们在第三个索引处获取标签作为预测。
将预测值与实际值进行比较,以查看模型执行的正确程度。
在下图中,我们可以看到预测值和实际值之间的差异。
y _ classes=[NP . arg max(element)forelementinpred]print( Predicted _ values:,y _ classes[:10])print( Actual _ values:,y_test[:10])
当我们看到我们的模型过度拟合时,我们可以使用一些额外的步骤来提高模型性能并减少过度拟合,例如向模型添加漏失或执行数据增强,因为过度拟合问题也可能是由于可用数据量少。
在这里,我将展示我们如何使用Dropout来减少过度拟合。我将为此定义一个新的模型。
model 4=Sequential()# addingthefirsconvolutionlayermodel 4 . add(Conv2D(32,(3,3),activation=relu ,input_shape=(32,32,3))# addingmaxpoolinglayermodel 4 . add(maxpool 2d(2,2))# addingdropooutmodel 4 . add(Dropout(0.2))# addingotherconvolutionlayermodel 4 . add(Conv2D(64,(3,3),activation= relu ))model 4 . add(maxpool 2d(2,2))。
模型4 .评估(X _测试,y _测试)
通过这个模型,我们得到了76%的训练准确率(低于第一个模型),但是我们得到了72%的测试准确率,也就是说一定程度上解决了过拟合的问题。
尾注这是我们如何用Python实现CNN的。这里使用的数据集是一个简单的数据集,可以用于学习目的,但是一定要尝试在更大更复杂的数据集上实现CNN。这也将有助于发现更多的挑战和解决方案。
END
如果你看到这个,说明你喜欢这篇文章,请转发,喜欢。微信搜索“大叔_pn”。欢迎添加小编微信“woshicver”,每天在朋友圈更新一篇高质量的博文。
扫描二维码添加边肖
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。