卷积神经网络的基本结构,卷积神经网络的结构

  卷积神经网络的基本结构,卷积神经网络的结构

  个人资料

  我最近的一篇文章是关于卷积网络,它的工作和组成:这篇文章使用卷积神经网络进行图像分类,详细了解了所有的步骤。所以,如果你不熟悉这个,请继续读下去。

  简单来说,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”,每天在朋友圈更新一篇高质量的博文。

  

扫描二维码添加边肖

卷积神经网络的基本结构,卷积神经网络的结构