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命令行参数解析OptionParser类用法实例
Oct 09 Python
简单介绍Python中的RSS处理
Apr 13 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
python用户管理系统的实例讲解
Dec 23 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
python正则表达式匹配IP代码实例
Dec 28 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
Python3爬虫发送请求的知识点实例
Jul 30 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目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php array的学习笔记
2012/05/16 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
意大利团购网站:Groupon意大利
2016/10/11 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
运动会解说词200字
2014/02/06 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
店面出租协议书范本
2014/11/28 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
会计工作能力自我评价
2015/03/05 职场文书