Слой Conv3D
Слой Conv3D выполняет операцию трехмерной свертки над входным тензором.
Такой слой применяется к данным, имеющим три пространственных измерения,
например, к видео (кадры, высота, ширина) или к объемным изображениям.
Первым параметром передается число фильтров filters, вторым - размер ядра свертки kernel_size.
Также можно указать шаг свертки strides, тип паддинга padding,
функцию активации activation и другие параметры.
Синтаксис
tf.keras.layers.Conv3D(
filters,
kernel_size,
strides=(1, 1, 1),
padding="valid",
data_format=None,
dilation_rate=(1, 1, 1),
groups=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
)
Пример
Давайте создадим слой Conv3D с 8 фильтрами и ядром размера 3×3×3
и применим его к входному тензору формы (1, 4, 4, 4, 1):
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.Conv3D(filters=8, kernel_size=(3, 3, 3))
t = tf.constant([[[[[1.0], [2.0], [3.0], [4.0]],
[[5.0], [6.0], [7.0], [8.0]],
[[9.0], [10.0], [11.0], [12.0]],
[[13.0], [14.0], [15.0], [16.0]]]]])
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 2, 2, 2, 8)
Пример
Давайте создадим слой Conv3D с шагом свертки 2 по всем измерениям
и применим его к тому же входному тензору:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.Conv3D(filters=4, kernel_size=(2, 2, 2), strides=(2, 2, 2))
t = tf.constant([[[[[1.0], [2.0], [3.0], [4.0]],
[[5.0], [6.0], [7.0], [8.0]],
[[9.0], [10.0], [11.0], [12.0]],
[[13.0], [14.0], [15.0], [16.0]]]]])
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 2, 2, 2, 4)
Пример
Давайте создадим слой Conv3D с функцией активации relu
и паддингом same, затем применим его к входным данным:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.Conv3D(
filters=2,
kernel_size=(3, 3, 3),
padding="same",
activation="relu"
)
t = tf.constant([[[[[1.0], [2.0], [3.0], [4.0]],
[[5.0], [6.0], [7.0], [8.0]],
[[9.0], [10.0], [11.0], [12.0]],
[[13.0], [14.0], [15.0], [16.0]]]]])
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 4, 4, 4, 2)
Смотрите также
-
слой
Conv2D,
который выполняет двумерную свертку -
слой
Conv1D,
который выполняет одномерную свертку -
слой
MaxPooling3D,
который выполняет трехмерную операцию пулинга -
слой
Conv2DTranspose,
который выполняет транспонированную свертку