Функция nn.conv3d
Функция nn.conv3d применяет трехмерную свертку к входным данным.
Первым параметром передается входной тензор формы
[batch, depth, height, width, channels].
Вторым параметром передается фильтр формы
[filter_depth, filter_height, filter_width, in_channels, out_channels].
Третьим параметром задается шаг свертки (strides).
Четвертым параметром указывается тип дополнения (padding):
'SAME' или 'VALID'.
Синтаксис
tf.nn.conv3d(input, filters, strides, padding, [data_format], [dilations], [name])
Пример
Давайте создадим входной тензор формы
[1, 2, 2, 2, 1] и фильтр формы
[1, 1, 1, 1, 1], а затем выполним свертку с шагом
[1, 1, 1, 1, 1] и дополнением 'VALID':
import tensorflow as tf
t = tf.constant([[[[[1.0], [2.0]], [[3.0], [4.0]]], [[[5.0], [6.0]], [[7.0], [8.0]]]]])
filters = tf.constant([[[[[2.0]]]]])
res = tf.nn.conv3d(t, filters, strides=[1, 1, 1, 1, 1], padding='VALID')
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[[ 2.]
[ 4.]]
[[ 6.]
[ 8.]]]
[[[10.]
[12.]]
[[14.]
[16.]]]]], shape=(1, 2, 2, 2, 1), dtype=float32)
Пример
Давайте выполним ту же свертку, но с дополнением
'SAME', чтобы сохранить пространственные размеры:
import tensorflow as tf
t = tf.constant([[[[[1.0], [2.0]], [[3.0], [4.0]]], [[[5.0], [6.0]], [[7.0], [8.0]]]]])
filters = tf.constant([[[[[2.0]]]]])
res = tf.nn.conv3d(t, filters, strides=[1, 1, 1, 1, 1], padding='SAME')
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[[ 2.]
[ 4.]]
[[ 6.]
[ 8.]]]
[[[10.]
[12.]]
[[14.]
[16.]]]]], shape=(1, 2, 2, 2, 1), dtype=float32)
Пример
Давайте создадим входной тензор с двумя каналами и фильтр, который преобразует два входных канала в один выходной:
import tensorflow as tf
t = tf.constant([[[[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]]]])
filters = tf.constant([[[[[1.0], [1.0]], [[1.0], [1.0]]]]])
res = tf.nn.conv3d(t, filters, strides=[1, 1, 1, 1, 1], padding='VALID')
print(res)
Результат выполнения кода:
tf.Tensor([[[[[ 3.]
[ 7.]]
[[11.]
[15.]]]]], shape=(1, 2, 1, 2, 1), dtype=float32)
Смотрите также
-
функцию
conv1d,
которая выполняет одномерную свертку -
функцию
conv2d,
которая выполняет двумерную свертку -
функцию
conv2d_transpose,
которая выполняет транспонированную двумерную свертку -
функцию
dilation2d,
которая выполняет двумерную дилатацию