keras中的卷积层&池化层的用法


Posted in Python onMay 22, 2020

卷积层

创建卷积层

首先导入keras中的模块

from keras.layers import Conv2D

卷积层的格式及参数:

Conv2D(filters, kernel_size, strides, padding, activation='relu', input_shape)

filters: 过滤器数量

kernel_size:指定卷积窗口的高和宽的数字

strides: 卷积stride,如果不指定任何值,则strides设为1

padding: 选项包括'valid'和'same',默认值为'valid'

activation: 通常为'relu',如果不指定任何值,则不应用任何激活函数,通常应该向网络中每个卷积层添加一个Relu激活函数

如果卷积层出现在输入层之后,必须提供另一个input_shape参数:

input_shape: 指定输入的高度、宽度和深度的元组;如果卷积层不是网络的第一个层级,则不应该包含input_shape参数。

示例1:

假设我要构建一个 CNN,输入层接受的是 200 x 200 像素(对应于高 200、宽 200、深 1 的三维数组)的灰度图片。然后,假设我希望下一层级是卷积层,具有 16 个过滤器,每个宽和高分别为 2。在进行卷积操作时,我希望过滤器每次跳转 2 个像素。并且,我不希望过滤器超出图片界限之外;也就是说,我不想用 0 填充图片。

要构建该卷积层,我将使用下面的代码

Conv2D(filters=16, kernel_size=2, strides=2, activation='relu', input_shape=(200, 200, 1))

示例 2

假设我希望 CNN 的下一层级是卷积层,并将示例 1 中构建的层级作为输入。假设新层级是 32 个过滤器,每个的宽和高都是 3。在进行卷积操作时,我希望过滤器每次移动 1 个像素。我希望卷积层查看上一层级的所有区域,因此不介意过滤器在进行卷积操作时是否超过上一层级的边缘。

然后,要构建此层级,我将使用以下代码:

Conv2D(filters=32, kernel_size=3, padding='same', activation='relu')

卷积层中的参数数量

卷积层中的参数数量取决于filters, kernel_size, input_shape的值

K: 卷积层中的过滤器数量, K=filters

F:卷积过滤器的高度和宽度, F = kernal_size

D_in: 上一层级的深度, D_in是input_shape元组中的最后一个值

卷积层中的参数数量计算公式为:K * F * F * D_in + K

卷积层的形状

卷积层的形状取决于kernal_size, input_shape, padding, stride的值

K: 卷积层中的过滤器数量,K = filters

F: 卷积过滤器的高度和宽度, F = kernal_size

H_in: 上一层级的高度

W_in: 上一层级的宽度

S: stride

卷积层的深度始终为过滤器数量K

如果padding=‘same', 那么卷积层的空间维度计算公式如下:

height = ceil(float(H_in) / float(S))
width = ceil(float(W_in) / float(S))

如果padding = ‘valid', 那么卷积层的空间维度计算公式如下:

height = ceil(float(H_in - F + 1) / float(S))
width = ceil(float(W_in - F + 1) / float(S))

可以使用如下形式检测卷积层的维度:

from keras.models import Sequential
from keras.layers import Conv2D

model = Sequential()
model.add(Conv2D(filters=32, kernel_size=3, strides=2, padding='same', 
 activation='relu', input_shape=(128, 128, 3)))
model.summary()

池化层

keras中的最大池化层

创建池化层,首先导入keras中的模块

from keras.layers import MaxPooling2D

然后用以下形式创建池化层

MaxPooling2D(pool_size, strides, padding)

参数

pool_size:指定池化窗口高度和宽度的数字

strides:垂直和水平stride,默认参数为pool_size

padding:选项包括'valid'和'same',默认参数为'valid'

示例:

假设我要构建一个 CNN,并且我想通过在卷积层后面添加最大池化层,降低卷积层的维度。假设卷积层的大小是 (100, 100, 15),我希望最大池化层的大小为 (50, 50, 15)。

要实现这一点,我可以在最大池化层中使用 2x2 窗口,stride 设为 2,代码如下:

MaxPooling2D(pool_size=2, strides=2)

如果你想将 stride 设为 1,但是窗口大小依然保留为 2x2,则使用以下代码:

MaxPooling2D(pool_size=2, strides=1)

可以使用如下形式检测最大池化层的维度:

from keras.models import Sequential
from keras.layers import MaxPooling2D

model = Sequential()
model.add(MaxPooling2D(pool_size=2, strides=2, input_shape=(100, 100, 15)))
model.summary()

以上这篇keras中的卷积层&池化层的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之玩转字符串(1)
Sep 14 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python 堆和优先队列的使用详解
Mar 05 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
python安装本地whl的实例步骤
Oct 12 Python
Python类的动态绑定实现原理
Mar 21 Python
Python代码需要缩进吗
Jul 01 Python
Python 如何定义匿名或内联函数
Aug 01 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
Keras Convolution1D与Convolution2D区别说明
May 22 #Python
Python pip安装模块提示错误解决方案
May 22 #Python
keras中的backend.clip用法
May 22 #Python
Pycharm修改python路径过程图解
May 22 #Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 #Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 #Python
python实现猜单词游戏
May 22 #Python
You might like
PHP调用C#开发的dll类库方法
2014/07/28 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
Python 模板引擎的注入问题分析
2017/01/01 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python安装Scrapy图文教程
2017/08/14 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python对文件的操作方法汇总
2020/02/28 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
实例代码讲解Python 线程池
2020/08/24 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
历史教育专业个人求职信
2013/12/13 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
学校七一活动方案
2014/01/19 职场文书
出国考察邀请函
2014/01/21 职场文书
单位授权委托书范本
2014/09/26 职场文书
东京审判观后感
2015/06/01 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
python基础之文件处理知识总结
2021/05/23 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript