tf.keras.layers.Conv3D

3D卷积层

比Conv2D多一个维度。

举例说明:Conv2D对720×720的3通道图像进行卷积,batch_size设为64,则输入向量的维度为 [64, 720, 720, 3], Conv3D对分辨率为720×720的视频(假设为连续5帧)进行卷积,batch_size设为64,则输入向量的维度为 [64, 5, 720, 720, 3]

keras.layers.Conv3D(filters, 
                    kernel_size, 
                    strides=(1, 1, 1), 
                    padding='valid', 
                    data_format=None, 
                    dilation_rate=(1, 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)

参数详解

  • filters: 卷积中滤波器的数量,表示输出张量的通道数
  • kernel_size: 卷积窗口的宽度和高度
  • strides: 卷积沿宽度和高度方向的步长
  • padding: 'VALID' 或 'SAME','VALID'表示无填充,'SAME'表示用0填充
  • data_format: 表示输入张量的维度顺序,默认为 [batch, dim1, dim2, dim3, channel], 如对分辨率为720×720视频(假设为连续5帧彩色图像)进行卷积,batch_size设为64,则输入向量的维度为 [64, 5, 720, 720, 3]
  • dilation_rate: 膨胀卷积的膨胀率
  • activation: 要使用的激活函数 
  • use_bias: 布尔值,该层是否使用偏置向量
  • kernel_initializerkernel 权值矩阵的初始化器
  • bias_initializer: 偏置向量的初始化器
  • kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数
  • bias_regularizer: 运用到偏置向量的正则化函数
  • activity_regularizer: 运用到层输出(它的激活值)的正则化函数
  • kernel_constraint: 运用到 kernel 权值矩阵的约束函数
  • bias_constraint: 运用到偏置向量的约束函数

 示例

from tensorflow.keras.layers import Conv3D
import tensorflow as tf
import numpy as np

# 定义一个3D卷积层, 用0填充
conv1 = Conv3D(filters=32,
               kernel_size=[3, 3, 3],
               strides=[2, 2, 2],
               padding='SAME')

# 定义一个3D卷积层, 不填充
conv2 = Conv3D(filters=32,
               kernel_size=[3, 3, 3],
               strides=[2, 2, 2],
               padding='VALID')
  
# 生成一个维度为[64, 7, 5, 5, 3]的矩阵
x = np.random.random((64, 5, 7, 7, 3))

# 转成tensor类型,第一个维度64表示batch
# numpy中的数据类型和tensorflow中的数据类型完全兼容,所以这一步可以省略
x = tf.convert_to_tensor(x)
print(x.shape) # [64, 7, 5, 5, 3]

# 进行卷积
y1 = conv1(x)
print(y1.shape) # [64, 4, 3, 3, 32]

# 进行卷积
y2 = conv2(x)
print(y2.shape) # [64, 3, 2, 2, 32]

猜你喜欢

转载自blog.csdn.net/weixin_46566663/article/details/127622753
今日推荐