广告位联系
返回顶部
分享到

关于keras中卷积层Conv2D的学习记录

python 来源:互联网 作者:佚名 发布时间:2023-02-23 21:13:43 人浏览
摘要

keras中卷积层Conv2D的学习 关于卷积的具体操作不细讲,本文只是自己太懒了不想记手写笔记。 由于自己接触到的都是图像 处理相关的工作,因此,在这里只介绍2D卷积。 1 2 3 4 5 6 7 8

keras中卷积层Conv2D的学习

关于卷积的具体操作不细讲,本文只是自己太懒了不想记手写笔记。

由于自己接触到的都是图像

处理相关的工作,因此,在这里只介绍2D卷积。

1

2

3

4

5

6

7

8

9

10

11

12

13

keras.layers.convolutional.Conv2D(filters,kernel_size,strides(1,1), 

                                  padding='valid',

                                  data_format=None,

                                  dilation_rate=(1,1),

                                  activation=None,

                                  use_bias=True,

                                  kernel_initializer='glorot_uniform',

                                  bias_initializer='zeros',

                                  kernel_regularizer=None,

                                  bias_regularizer=None,

                                  activity_regularizer=None,

                                  kernel_constraint=None,

                                  bias_constraint=None)

此操作将二维向量进行卷积,当使用该层作为第一层时,应提供input_shape参数。

参数

  • filters:卷积核的数目(即输出的维度)。
  • kernel_size:单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。如为单个整数,则表示在各个空间维度的相同长度。
  • strides:单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。任何不为1的strides均与任何不为1的dilation_rata均不兼容。
  • padding:补0策略,为“valid”, “same”。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)。
  • dilation_rate:单个整数或由两个个整数构成的list/tuple,指定dilated convolution中的膨胀比例。任何不为1的dilation_rata均与任何不为1的strides均不兼容。
  • data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。
  • use_bias:布尔值,是否使用偏置项。
  • kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。
  • bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。
  • kernel_regularizer:施加在权重上的正则项,为Regularizer对象。
  • bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象。
  • activity_regularizer:施加在输出上的正则项,为Regularizer对象。
  • kernel_constraints:施加在权重上的约束项,为Constraints对象。
  • bias_constraints:施加在偏置上的约束项,为Constraints对象。

keras中conv2d,conv2dTranspose的Padding详解

conv2d和conv2dTranspose属于最常用的层,但在keras的实现中关于padding的部分有点模糊,周末趁着空闲做了一些尝试,来实验padding的valid和same参数在实际过程中如何操作的。

conv2D演示代码

conv2D部分

1

2

3

4

5

6

7

8

9

10

11

v_input = np.ones([1,5,5,1])

kernel = np.ones([3,3])

stride = 1

model = Sequential()

model.add(Conv2D(1, kernel_size=(3, 3),

                 activation='relu',

                 padding="valid" ,  # "same"

                 strides = 1,

                 # dilation_rate = 1,

                 kernel_initializer = keras.initializers.Ones(),

                 input_shape=v_input.shape[1:]))

其中stride可以尝试多组测试

padding在valid 和 same 间切换测试

Conv2d演示结论

padding 为valid则不进行填充, 根据stride的滑动大小来做平移, 则:

1

output_shape = ceil( (input_shape - (kernel_size - 1)) / stride )

如果是same模式则 会进行左右上下的补齐, 其中左,上依次补齐 flood (kernel_size -1 ) / 2 , 右下补齐ceil (( kernel_size - 1) /2 ) ,补齐后进行的操作就是类似valid下的滑动卷积

1

output_shape = ceil (input_shape / stride)

  • ceil表示上取整 
  • flood表示下取整

CONV2Dtranspose演示代码

1

2

3

4

5

6

7

8

9

10

11

v_input = np.ones([1,5,5,1])

kernel = np.ones([3,3])

stride = 1

model = Sequential()

model.add(Conv2DTranspose(1, kernel_size=(3, 3),

                 activation='relu',

                 padding="valid" ,  # "same"

                 strides = 1,

                 # dilation_rate = 1,

                 kernel_initializer = keras.initializers.Ones(),

                 input_shape=v_input.shape[1:]))

如果padding的设置为valid则,保持最小相交的原则上下左右均填充kernel_size大小,如果stride设置为非1,起实际的作用和dilation_rate一样均是在矩阵中进行填充(实际滑动是永远都是1) 具体填充出来的矩阵大小是 (input_size -1) * stride + 1 + 2 * (kernel_size - 1)

之后就是按照这个矩阵做着类似conv2d valid的卷积 则:

1

output_shape = (input_size -1) * stride + 1 + 2 * (kernel_size - 1) - (kernel_size -1) = (input_size - 1) * stride + kernel_size

在这里插入图片描述

如果padding为same的话则output_shape = input_shape * stride

其中原始矩阵左上padding = ceil (( kernel_size ) /2 )  右下补齐 flood (( kernel_size ) /2 )  这里conv2d


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/qq_42216010/article/details/99446039
相关文章
  • 基于Python实现绘制一个足球

    基于Python实现绘制一个足球
    前情提要 如果想优雅地绘制一个足球,那首先需要绘制正二十面体:用Python绘制正二十面体 其核心代码为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1
  • 关于keras中卷积层Conv2D的学习记录

    关于keras中卷积层Conv2D的学习记录
    keras中卷积层Conv2D的学习 关于卷积的具体操作不细讲,本文只是自己太懒了不想记手写笔记。 由于自己接触到的都是图像 处理相关的工作,
  • pycharm中执行.sh文件的方法

    pycharm中执行.sh文件的方法
    背景 在运行神经网络相关的实验的时候,通常要跑很多次实验,而每次实验运行时间很久,每运行完一次就需要手动再运行下一次实验。(
  • pycharm2022.2远程连接服务器调试代码实现

    pycharm2022.2远程连接服务器调试代码实现
    目的: 同步本地和服务器的全部或者部分文件 本地debug,服务器跑实验 需要条件: 服务器上已经创建好虚拟环境 你本地已经安装好pychar
  • numpy.unique()使用方法介绍
    numpy.unique() 函数接受一个数组,去除其中重复元素,并按元素由小到大返回一个新的无元素重复的元组或者列表。 1. 参数说明 1 numpy.unique
  • JWT的原理及使用
    目录JWT的原理及使用一、什么是JWT?二、签发认证流程三、使用方法1.设置登录接口2.设置过期事件3.定制返回格式4.配置认证类和权限类5.写
  • NumPy迭代数组的实现的介绍
    NumPy中引入了 nditer 对象来提供一种对于数组元素的访问方式。 一、单数组迭代 1. 使用 nditer 访问数组的每个元素 1 2 3 4 5 6 7 8 9 10 11 12 13 1
  • python批量翻译excel表格中的英文
    需求背景 女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文。 主要设计 读取一个表格文件,获取需要翻译的文本 使用百度翻译
  • python中数字列表转化为数字字符串的代码

    python中数字列表转化为数字字符串的代码
    1. python中数字组成的列表转化为字符串或者一串数字 1 2 3 4 5 6 7 8 f=[1,2,3,4] num=len(f) m= #建立空字符串 for i in range(num): x=str(f[i]) m=m+x #利用字符
  • pandas中groupby操作实现介绍

    pandas中groupby操作实现介绍
    一、实验目的 熟练掌握pandas中的groupby操作 二、实验原理 groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False) 参数说明
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计