亲宝软件园·资讯

展开

Python实现卷积神经网络 Python深度学习之实现卷积神经网络

刘润森! 人气:0
想了解Python深度学习之实现卷积神经网络的相关内容吗,刘润森!在本文为您仔细讲解Python实现卷积神经网络的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python实现卷积神经网络,python深度学习,下面大家一起来学习吧。

一、卷积神经网络

Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN。CNN是一种特殊的多层神经网络,用于处理具有明显网格状拓扑的数据。其网络的基础基于称为卷积的数学运算。

卷积神经网络(CNN)的类型

以下是一些不同类型的CNN:

二、网络架构

以下是CNN中不同层的网络架构:

CNN架构的完整概述

三、卷积

卷积是对名为fg的两个函数的数学计算,得出第三个函数(f * g)。第三个功能揭示了一个形状如何被另一个形状修改。其数学公式如下:

h ( x , y ) = f ( x , y ) ∗ g ( x , y ) h(x,y)=f(x,y)*g(x,y) h(x,y)=f(x,y)∗g(x,y)

卷积方程

卷积有几个非常重要的概念:遮罩。

图中的黄色的部分的就是遮罩

四、卷积层

卷积层是CNN的核心构建块。CNN是具有一些卷积层和其他一些层的神经网络。卷积层具有几个进行卷积运算的过滤器。卷积层应用于二维输入,由于其出色的图像分类工作性能而非常著名。它们基于具有二维输入的小核k的离散卷积,并且该输入可以是另一个卷积层的输出。

带滤波器的卷积层

五、在Keras中构建卷积层

from keras.models import Sequential
from keras.layers.convolutional import Conv2D
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))

上面的代码实现说明:

接下来,使用不同的参数值构建一个卷积层,如下所示

六、池化层

池化层它的功能是减少参数的数量,并减小网络中的空间大小。我们可以通过两种方式实现池化:

池化层中的输入和输出矩阵

上图显示了带有步幅为2的2X2滤波器的MaxPool池化层。

Max Pooling和Average Pooling的区别

在Keras中实现Max Pool层,如下所示:

model.add(MaxPooling2D(pool_size =(2,2)))

七、全连接层

全连接层是确定最终预测的所有输入和权重的总和,代表最后一个合并层的输出。它将一层中的每个神经元连接到另一层中的每个神经元

全连接层

全连接层的主要职责是进行分类。它与softmax激活函数一起使用以得到结果。

用于多类的激活函数是softmax函数,该函数以0和1(总计为1)的概率对完全连接的层进行规范化。

带有非线性函数“ Softmax”的Keras代码如下:

model.add(Dense(10, activation='softmax'))

八、Python实现卷积神经网络

环境Google Colab

导入所有必需的库

import numpy as np
import pandas as pd
from keras.optimizers import SGD
from keras.datasets import cifar10
from keras.models import Sequential
from keras.utils import np_utils as utils
from keras.layers import Dropout, Dense, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D

加载cifar10数据:

(X, y), (X_test, y_test) = cifar10.load_data()
# 规范化数据
X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0

转换为分类:

y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)

初始化模型:

model = Sequential()

使用以下参数添加卷积层:

model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))
# Dropout
model.add(Dropout(0.2))
# 添加另一个卷积层 padding ='valid'表示输出尺寸可以采用任何形式
model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid'))
# 添加一个最大池化层
model.add(MaxPooling2D(pool_size =(2,2)))
# 展平
model.add(Flatten())
# Dense层 隐藏单元数为521
model.add(Dense(512, activation='relu'))
# Dropout
model.add(Dropout(0.3))
#output 
model.add(Dense(10, activation='softmax'))
# 编译模型 激活器选择SGD
model.compile(loss='categorical_crossentropy',             optimizer=SGD(momentum=0.5, decay=0.0004), metrics=['accuracy'])

25个epochs

model.fit(X, y, validation_data=(X_test, y_test), epochs=25,          batch_size=512)

九、总结

卷积神经网络是一种特殊的多层神经网络,主要用于提取特征。CNN使用称为卷积和池化的两个操作将图像缩小为其基本特征,并使用这些特征适当地理解和分类图像

加载全部内容

相关教程
猜你喜欢
用户评论