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_initializer :
kernel
инициализатор для весовой матрицы- bia_initializer : инициализатор для вектора смещения
- kernel_regularizer
kernel
: функция регуляризатора , применяемая к матрице весов.- 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]