📅  最后修改于: 2023-12-03 15:34:05.166000             🧑  作者: Mango
在深度学习中,卷积神经网络是常用的神经网络之一。tf.keras.layers.Conv2D()函数是tensorflow中的一个核心函数,用来实现二维卷积操作。
函数原型如下:
tf.keras.layers.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,
**kwargs
)
参数说明:
filters
:整数,代表卷积核的数量(即输出的维度)。kernel_size
:整数或元组,代表卷积核的尺寸。strides
:整数或元组,代表卷积核的步长,默认为 (1, 1)。padding
:字符串,可选值为 'valid' 或 'same'。'valid' 表示不使用补零,'same' 表示补零。data_format
:字符串,代表输入数据的格式,默认为 None。如果为 'channels_first',输入数据的形状为 (batch_size, channels, height, width);如果为 'channels_last',输入数据的形状为 (batch_size, height, width, channels)。dilation_rate
:整数或元组,代表卷积核的扩展率,默认为 (1, 1)。activation
:字符串,代表激活函数。use_bias
:布尔值,是否使用偏置项,默认为 True。kernel_initializer
:权重初始化方法,可以是字符串(如 'glorot_uniform')或可调用对象,默认为 'glorot_uniform'。bias_initializer
:偏置项初始化方法,可以是字符串或可调用对象,默认为 'zeros'。kernel_regularizer
:权重正则化方法,一个可调用对象。bias_regularizer
:偏置项正则化方法,一个可调用对象。activity_regularizer
:输出正则化方法,一个可调用对象。kernel_constraint
:权重约束方法,一个可调用对象。bias_constraint
:偏置项约束方法,一个可调用对象。import tensorflow as tf
# 创建一个输入张量
input_tensor = tf.ones((1, 32, 32, 3))
# 创建一个卷积层
conv_layer = tf.keras.layers.Conv2D(filters=64, kernel_size=3, activation='relu')
# 在卷积层上执行前向传播
output_tensor = conv_layer(input_tensor)
# 输出输出张量的形状
print(output_tensor.shape)
上述代码中,我们首先创建了一个输入张量 input_tensor,其形状为 (1, 32, 32, 3),表示一张 RGB 图片。然后创建了一个卷积层 conv_layer,其中 filters=64 代表设置卷积核数量为 64,kernel_size=3 代表设置卷积核尺寸为 3x3,activation='relu' 代表使用 ReLU 激活函数。最后在卷积层上执行前向传播,得到输出张量 output_tensor,并输出其形状。
注:输出张量的形状为 (1, 30, 30, 64),因为卷积操作会使输出张量的高度和宽度均减小 2,所以 (32, 32) 变为了 (30, 30),而 filters=64,代表输出张量的深度为 64。