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


Posted in Python onJune 05, 2021

一、卷积神经网络

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

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

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

  • 1D CNN:1D CNN 的输入和输出数据是二维的。一维CNN大多用于时间序列。
  • 2D CNNN:2D CNN的输入和输出数据是三维的。我们通常将其用于图像数据问题。
  • 3D CNNN:3D CNN的输入和输出数据是四维的。一般在3D图像上使用3D CNN,例如MRI(磁共振成像),CT扫描(甲CT扫描或计算机断层扫描(以前称为计算机轴向断层或CAT扫描)是一种医学成像 技术中使用的放射学获得用于非侵入性详述的身体的图像诊断的目的)和其他复杂应用程序的DICOM图像(医学数字成像)

二、网络架构

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

  • 卷积层
  • 池化层
  • 全连接层

CNN架构的完整概述

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

三、卷积

卷积是对名为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)

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

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

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

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

四、卷积层

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

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

五、在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'))

上面的代码实现说明:

  • 输出将具有32个特征图。
  • 内核大小将为3x3。
  • 输入形状为32x32,带有三个通道。
  • padding = same。这意味着需要相同尺寸的输出作为输入。
  • 激活指定激活函数。

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

六、池化层

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

  • Max Pooling:表示矩形邻域内的最大输出。Average Pooling:表示矩形邻域的平均输出
  • Max Pooling和Average Pooling减少了图像的空间大小,提供了更少的特征和参数以供进一步计算。

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

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

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

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

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

七、全连接层

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

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

全连接层的主要职责是进行分类。它与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()

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

  • Features map = 32
  • 内核大小= 3x3
  • 输入形状= 32x32
  • Channels = 3
  • Padding = 3→表示与输入相同的尺寸输出
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)

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

九、总结

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

到此这篇关于Python深度学习之实现卷积神经网络的文章就介绍到这了,更多相关Python实现卷积神经网络内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的一个火车票转让信息采集器
Jul 09 Python
python类继承用法实例分析
May 27 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
详解Python中类的定义与使用
Apr 11 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
python如何将两个txt文件内容合并
Oct 18 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python随机模块random的22种函数(小结)
May 15 Python
如何利用Python识别图片中的文字
May 31 Python
python实现xml转json文件的示例代码
Dec 30 Python
python opencv通过4坐标剪裁图片
Jun 05 #Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 #Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
You might like
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
python sys.argv[]用法实例详解
2018/05/25 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
毕业设计计划书
2014/01/09 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
公司会议开幕词
2015/01/29 职场文书
乱世佳人观后感
2015/06/08 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang