tf.keras.layers.Conv3D

3D сверточный слой

Еще одно измерение, чем Conv2D.

Например: Conv2D выполняет свертку на 3-канальном изображении 720×720, а для 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)

Подробные параметры

  • filter : количество фильтров в свертке, указывающее количество каналов выходного тензора
  • kernel_size : ширина и высота окна свертки
  • strides : размер шага свертки по ширине и высоте
  • padding : ' VALID' or ' SAME', ' VALID' означает отсутствие заполнения, ' SAME' означает заполнение 0
  • data_format : указывает порядок измерения входного тензора, по умолчанию [batch, dim1, dim2, dim3, channel], например, свертка видео с разрешением 720 × 720 (при условии, что 5 последовательных кадров цветных изображений), batch_size равен установлен в 64 , тогда размерность входного вектора [64, 5, 720, 720, 3]
  • dilation_rate : скорость расширения расширенной свертки
  • активация : функция активации для использования 
  • use_bias : логическое значение, указывает, использует ли слой вектор смещения.
  • kernel_initializerkernel инициализатор для весовой матрицы
  • bia_initializer : инициализатор для вектора смещения
  • kernel_regularizerkernel :  функция регуляризатора , применяемая к  матрице весов.
  • bia_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]

Supongo que te gusta

Origin blog.csdn.net/weixin_46566663/article/details/127622753
Recomendado
Clasificación