📜  Python Tensorflow – tf.keras.layers.Conv2D()函数(1)

📅  最后修改于: 2023-12-03 15:34:05.166000             🧑  作者: Mango

Python Tensorflow – tf.keras.layers.Conv2D()函数

在深度学习中,卷积神经网络是常用的神经网络之一。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。