tensorflow之tf.keras.layers.Conv2D

概念(个人理解)

创建了一个2D的卷积层,2D convolution layer。
作用:
用以上tf.keras.layers.Conv2D创建一个卷积层对象,用来处理图片的矩阵张量,我们看看简单的代码

# The inputs are 28x28 RGB images with `channels_last` and the batch
# size is 4.
input_shape = (4, 28, 28, 3)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv2D(
2, 3, activation='relu', input_shape=input_shape[1:])(x)
print(y.shape)
结果是:(4,26,26,2)

可以看到该对象的实例输入矩阵张量后,函数返回的是处理后的张量。接下来我们看看该函数中参数作用

参数解析

tf.keras.layers.Conv2D(
    filters, kernel_size, strides=(1, 1), padding='valid',
    data_format=None, dilation_rate=(1, 1), groups=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参数决定卷积核的个数,这个参数一般决定你经过卷尺层矩阵张量形状的通道数,只说你能看到的最直接的效果,至于这个通道数的数学原理以及能带来什么效果一时半会说不清楚(省略)。

kernel_size参数决定每个卷积核的尺寸
padding参数决定是否需要在输入张量上补数据,一般只有两种模式
strides卷积步长,卷积步长和卷积核大小尺寸决定以及是否padding输出的矩阵张量的高宽,即矩阵的尺寸

data_format参数时设置你输入矩阵参量的形式,一般两种模式channels_last(默认)或channels_first之一。 输入中尺寸的排序。 channels_last对应于具有形状(batch_size、高度、宽度、通道)的输入,而channels_first对应于具有形状(batch_size、通道、高度、宽度)的输入。
activation参数决定你的激活函数是什么,一半relu,sigmoid等

dilation_rate参数是一个数或者一个元组,指定用于扩展卷积的膨胀率。 可以是单个整数来为所有空间维度指定相同的值

其他参数

kernel_initializer=tf.zeros_initializer()
bias_initializer=tf.zeros_initializer()
根据其英文解释可以理解bias_constraint意思就是偏置限制
等参数我就不一一解释了,都是用来设置卷积核的权重和偏置

`slim.conv2d`是TensorFlow中Slim框架中的卷积层函数,而`tensorflow.keras.layers.conv2d`是TensorFlow中Keras框架中的卷积层函数。 两者所提供的功能都是实现2D卷积层,但是使用方式和参数设置不同: `slim.conv2d`: ```python slim.conv2d(inputs, num_outputs, kernel_size, stride=1, padding='SAME', activation_fn=tf.nn.relu, normalizer_fn=None, weights_initializer=tf.truncated_normal_initializer(stddev=0.1), biases_initializer=tf.zeros_initializer(), scope=None) ``` 其中各参数含义为: - `inputs`:输入的tensor - `num_outputs`:卷积核的数量,也就是输出的通道数 - `kernel_size`:卷积核大小 - `stride`:卷积核滑动步长,默认为1 - `padding`:卷积层补零的方式,可以设置为`SAME`或者`VALID` - `activation_fn`:激活函数,默认为ReLu - `normalizer_fn`:正则化函数,如BN层 - `weights_initializer`:权重初始化函数 - `biases_initializer`:偏置初始化函数 - `scope`:变量作用域 `tensorflow.keras.layers.conv2d`: ```python tf.keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', 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`:输出的通道数 - `kernel_size`:卷积核的大小 - `strides`:卷积核滑动步长,默认为(1,1) - `padding`:卷积层补零方式,默认为`valid` - `activation`:激活函数,默认为`None` - `use_bias`:是否使用偏置 - `kernel_initializer`:权重初始化函数 - `bias_initializer`:偏置初始化函数 - `kernel_regularizer`:权重正则化函数 - `bias_regularizer`:偏置正则化函数 - `activity_regularizer`:输出正则化函数 - `kernel_constraint`:权重约束函数 - `bias_constraint`:偏置约束函数 总的来说,`tensorflow.keras.layers.conv2d`提供了更多的参数设置选项,控制更加细致,但对于简单的应用场景,`slim.conv2d`更简单方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值