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 yield 小结和实例
Apr 25 Python
详解Django中的权限和组以及消息
Jul 23 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
使用Django和Python创建Json response的方法
Mar 26 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
浅谈python中get pass用法
Mar 19 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
tensorflow模型转ncnn的操作方式
May 25 Python
python 列表推导和生成器表达式的使用
Feb 01 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经典的给图片加水印程序
2006/12/06 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
Augularjs-起步详解
2016/07/08 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
JS如何监听div的resize事件详解
2020/12/03 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python 实用工具状态机transitions
2020/11/21 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
大雁塔导游词
2015/02/04 职场文书
会议简讯范文
2015/07/20 职场文书