conv2d(inputs, filters, kernel_size,
strides=(1, 1),
padding='valid',
data_format='channels_last',
dilation_rate=(1, 1),
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=,
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None)
##作用
2D 卷积层的函数接口
这个层创建了一个卷积核,将输入进行卷积来输出一个 tensor。如果 use_bias
是 True
(且提供了 bias_initializer
),则一个偏差向量会被加到输出中。最后,如果 activation
不是 None
,激活函数也会被应用到输出中。
##参数
inputs
:Tensor 输入
filters
:整数,表示输出空间的维数(即卷积过滤器的数量)
kernel_size
:一个整数,或者包含了两个整数的元组/队列,表示卷积窗的高和宽。如果是一个整数,则宽高相等。
strides
:一个整数,或者包含了两个整数的元组/队列,表示卷积的纵向和横向的步长。如果是一个整数,则横纵步长相等。另外, strides
不等于1 和 dilation_rate
不等于1 这两种情况不能同时存在。
padding
:"valid"
或者 "same"
(不区分大小写)。"valid"
表示不够卷积核大小的块就丢弃,"same"
表示不够卷积核大小的块就补0。
"valid"
的输出形状为
L n e w = c e i l ( L − F + 1 S ) L_{new}= ceil(\frac{L-F+1}{S}) Lnew=ceil(SL−F+1)
"same"
的输出形状为
L n e w = c e i l ( L S ) L_{new}= ceil(\frac{L}{S}) Lnew=ceil(SL)
其中, L L L 为输入的 size(高或宽), F F F 为 filter 的 size, S S S 为 strides 的大小, c e i l ( ) ceil() ceil() 为向上取整。
data_format
:channels_last
或者 channels_first
,表示输入维度的排序。
`channels_last` corresponds to inputs with shape;
`(batch, height, width, channels)` while `channels_first` corresponds to inputs with shape `(batch, channels, height, width)`.
dilation_rate
:一个整数,或者包含了两个整数的元组/队列,表示使用扩张卷积时的扩张率。如果是一个整数,则所有方向的扩张率相等。另外, strides
不等于1 和 dilation_rate
不等于1 这两种情况不能同时存在。
activation
:激活函数。如果是None
则为线性函数。
use_bias
:Boolean
类型,表示是否使用偏差向量。
kernel_initializer
:卷积核的初始化。
bias_initializer
:偏差向量的初始化。如果是None
,则使用默认的初始值。
kernel_regularizer
:卷积核的正则项
bias_regularizer
:偏差向量的正则项
activity_regularizer
:输出的正则函数
kernel_constraint
:映射函数,当核被Optimizer
更新后应用到核上。Optimizer
用来实现对权重矩阵的范数约束或者值约束。映射函数必须将未被影射的变量作为输入,且一定输出映射后的变量(有相同的大小)。做异步的分布式训练时,使用约束可能是不安全的。
bias_constraint
:映射函数,当偏差向量被Optimizer
更新后应用到偏差向量上。
trainable
:Boolean
类型。
name
:字符串,层的名字。
reuse
:Boolean
类型,表示是否可以重复使用具有相同名字的前一层的权重。
##返回值
输出 Tensor
##异常抛出
ValueError
:if eager execution is enabled.