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中threading超线程用法实例分析
May 16 Python
Python定时执行之Timer用法示例
May 27 Python
python中实现k-means聚类算法详解
Nov 11 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
python 监控logcat关键字功能
Sep 04 Python
Python离线安装openpyxl模块的步骤
Mar 30 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 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 JSON 数据解析代码
2010/05/26 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
js判断是否按下了Shift键的方法
2015/01/27 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
Python中asyncore的用法实例
2014/09/29 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python 类的特殊成员解析
2018/06/20 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
体育系毕业生求职自荐信
2014/04/16 职场文书
法人委托书
2014/07/31 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB