keras.layers.Conv2D()函数参数用法及说明
作者:SP 发布时间:2022-02-25 01:15:05
tf.keras.layers.Conv2D() 函数
Conv2D (二维卷积层)
这一层创建了一个卷积核,它与这一层的输入卷积以产生一个输出张量
当使用此层作为模型的第一层时,提供关键字参数 input_shape (整数元组,不包括样本轴,不需要写batch_size)
def __init__(self, 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,
**kwargs):
参数
filters
int 类型,表示卷积核个数,filters 影响的是最后输入结果的的第四个维度的变化
import tensorflow as tf
from tensorflow.keras.layers import Conv2D
input_shape = (4, 600, 600, 3)
input = tf.random.normal(input_shape)
x = keras.layers.Conv2D(64, (1, 1), strides=(1, 1), name='conv1')(input)
print(x.shape)
OUTPUT:
(4, 600, 600, 64)
kernel_size
表示卷积核的大小,如果是方阵可以直接写成一个数,影响的是输出结果中间两个数据的维度
x = Conv2D(64, (2, 2), strides=(1, 1), name='conv1')(input)
#or Conv2D(64, 2, strides=(1, 1), name='conv1')(input)
print(x.shape)
OUTPUT:
(4, 599, 599, 64)
strides
tuple (int, int) 步长,同样会影响输出的中间两个维度,值得注意的是,括号里的数据可以不一致,分别控制横坐标和纵坐标
x = Conv2D(64, 1, strides=(2, 2), name='conv1')(input)
print(x.shape)
OUTPUT:
(4, 300, 300, 64)
padding
是否对周围进行填充,same 即使通过 kernel_size 缩小了维度,但是四周会填充 0,保持原先的维度;valid 表示存储不为 0 的有效信息
a = Conv2D(64, 1, strides=(2, 2), padding="same" , name='conv1')(input)
b = Conv2D(64, 3, strides=(2, 2), padding="same" , name='conv1')(input)
c = Conv2D(64, 3, strides=(1, 1), padding="same" , name='conv1')(input)
d = Conv2D(64, 3, strides=(1, 1), padding="valid", name='conv1')(input)
print(a.shape, b.shape, c.shape, d.shape)
OUTPUT:
(4, 300, 300, 64)
(4, 300, 300, 64)
(4, 600, 600, 64)
(4, 598, 598, 64)
activation
激活函数,如果 activation 不是 None,则它会应用于输出
use_bias
boolean,表示是否使用偏置量,如果 use_bias 为真,则创建一个偏置项并添加到输出中
data_format
用于规定 input_shape 的格式
如果不填写,默认是 channels_last,否则可以填写 channels_first。前者的会把 input_shape 这个三元组给识别成 (batch_size, height, width, channels),后者则会识别成 (batch_size, channels, height, width) 不过样本轴 (batch_size) 不需要自己填写
dilation_rate
int, tuple(int, int), list[int, int],指定用于扩展卷积的扩展率。可以是单个整数,为所有空间维度指定相同的值。该参数定义了卷积核处理数据时各值的间距。
在相同的计算条件下,该参数提供了更大的感受野。该参数经常用在实时图像分割中。当网络层需要较大的感受野,但计算资源有限而无法提高卷积核数量或大小时,可以考虑使用。
返回值
返回一个四维的张量
第一个数是 batch 的大小,也就是有几组数据;后三个数表示一个张量的大小
tf.keras.layers.conv2D学习
参数 | 描述 |
inputs | 把上一层的输出作为输入(直接将上一层作为参数输入即可) |
input_shape | 当作为模型的第一层时,需要指出输入的形状(samples,rows,cols,channels) ,只指出后三维即可,第一维度按batch_size自动指定 |
filters | 卷积过滤器的数量,对应输出的维数--卷积核的数目(即输出的维度) |
kernel_size | 整数,过滤器的大小,如果为一个整数则宽和高相同.单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。如为单个整数,则表示在各个空间维度的相同长度 |
strides | 横向和纵向的步长,如果为一个整数则横向和纵向相同.单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。任何不为1的strides均与任何不为1的dilation_rata均不兼容 |
padding | 补0策略,为“valid”, “same”。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。 |
data_format | channels_last为(batch,height,width,channels),channels_first为(batch,channels,height,width).以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。 |
dilation_rate | |
activation | 激活函数,如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) |
use_bias | 是否使用偏差量,布尔值 |
kernel_initializer | 卷积核的初始化。 |
bias_initializer | 偏差向量的初始化。如果是None,则使用默认的初始值。 |
kernel_regularizer | 卷积核的正则项 |
bias_regularizer | 偏差向量的正则项 |
activity_regularizer | 输出的正则函数 |
bias_constraint | 映射函数,当偏差向量被Optimizer更新后应用到偏差向量上。 |
trainable | Boolean类型。 |
name | 字符串,层的名字。 |
reuse | Boolean类型,表示是否可以重复使用具有相同名字的前一层的权重。 |
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 指出输入的形状(samples,rows,cols,channels) ,只指出后三维即可,第一维度按batch_size自动指定
# x_train (60000,28,28,1) >> input_shape=(60000,28,28,1) 第一维可以省略,自动根据batch_size指定
tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),activation="relu",input_shape=(28,28,1),padding="valid"),
来源:https://blog.csdn.net/SP_FA/article/details/119181599
猜你喜欢
- 本文实例讲述了PHP实现的AES双向加密解密功能。分享给大家供大家参考,具体如下:<?php/* * Created on 2018-
- 本文实例分析了LINUX下Oracle数据库用户创建方法。分享给大家供大家参考,具体如下:1)登录linux,以oracle用户登录(如果是
- 1、安装有两种安装方法:方法一:从Mac自带的python安装,命令如下:$brewinstall python如果出错的话前面加上sudo
- Python写一些简单的GUI界面也是非常简单的,并且Python有着丰富的库,这些库可以很方便我们去操作Windows系统,搭配界面,可以
- MySQL关键字Distinct用法介绍DDLPrepare SQL:create table test(id bigint not nul
- global 标识用于在函数内部,修改全局变量的值。我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域:变量定义在全局作用
- 代码如下:# -*- coding: utf-8 -*-#!/usr/bin/python# filename: todo.py# code
- Python离线安装包下载pip包pip download 你要下载的包名 -d 下载的路径# example 结果会下载很多whl包pip
- 今天在使用MySQL时却不知如何处理,插入记录后不知怎样获得刚刚插入的id,查过文档后发现了select last_insert_id(),
- 这里介绍了5中python获取window桌面路径的方法,获取这个路径有什么用呢?一般是将程序生成的文档输出到桌面便于查看编辑。前两个方法是
- python3.8新功能相关文章Python 3.8 新功能大揭秘【新手必学】 Python 3.8 新功能来一波(大部分人都不知
- 1. 二叉树的定义二叉树需满足的条件① 本身是有序树② 树中包含的各个节点的长度不能超过2,即只能是0、1或者22. 前序遍历前序遍历二叉树
- 问:怎样解决mysql连接过多的错误?答:系统不能连接数据库,关键要看两个数据:1、数据库系统允许的最大可连接数max_connection
- 最近做一个车牌识别项目,入门级别的,十分简单。车牌识别总体分成两个大的步骤:一、车牌定位:从照片中圈出车牌二、车牌字符识别这里只说第二个步骤
- 如果你能很好的理解我下面的一句话,那这些都不是问题了。asp是服务器端语言,它的作用是动态生成客户端浏览器所能识别的html css jav
- Django1.8.2中文文档:Django1.8.2中文文档上传图片配置上传文件保存目录1)新建上传文件保存目录。2)配置上传文件保存目录
- 需求:需求简单:但是感觉最后那部分遍历有意思:S型数组赋值,考虑到下标,简单题先实现个差不多的m = 5cols = 9rows = 4nu
- 寻找含有关键字文件和删除文件夹我们往往在操作文件时,会不知道文件具体的路径。一般如果只是处理一个文件的话我们可以在文件所在的文件夹下运行py
- 前言正则表达式是文本处理领域中的一个强大的工具,它可以让文本处理的能力呈指数级的提升,如果一款文本编辑器不支持正则表达式,那么它就算不上是一
- 所以就为FCKeditor写了个InsertCode的插件。整个插件的制作过程非常简单:FCKeditor插件开发请参考FCKeditor官