РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
218 of 824 menu

Класс ConvLSTM2D

Класс ConvLSTM2D представляет собой сверточный рекуррентный слой, который сочетает свертку над пространственными измерениями с механизмом LSTM по временной оси. Такой слой принимает на вход пятимерный тензор с формой (samples, time, rows, cols, channels) и возвращает последовательность или один тензор в зависимости от параметра return_sequences. Первым параметром передается число фильтров filters, вторым - размер ядра kernel_size, третьим - шаг свертки strides, а также функция активации activation и параметр return_sequences.

Синтаксис

tf.keras.layers.ConvLSTM2D( filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation='tanh', recurrent_activation='sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, return_sequences=False, return_state=False, go_backwards=False, stateful=False, dropout=0.0, recurrent_dropout=0.0 )

Пример

Давайте создадим слой ConvLSTM2D с четырьмя фильтрами и ядром размера 3 на 3 и применим его к последовательности из пяти временных шагов:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.ConvLSTM2D( filters=4, kernel_size=(3, 3), padding='same', return_sequences=True ) x = tf.random.normal((1, 5, 8, 8, 3)) res = layer(x) print(res.shape)

Результат выполнения кода:

(1, 5, 8, 8, 4)

Пример

Давайте вернем только последний временной шаг, установив return_sequences=False:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.ConvLSTM2D( filters=4, kernel_size=(3, 3), padding='same', return_sequences=False ) x = tf.random.normal((1, 5, 8, 8, 3)) res = layer(x) print(res.shape)

Результат выполнения кода:

(1, 8, 8, 4)

Пример

Давайте построим модель с двумя слоями ConvLSTM2D для обработки видеопоследовательности:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(5, 16, 16, 3)), tf.keras.layers.ConvLSTM2D( filters=8, kernel_size=(3, 3), padding='same', return_sequences=True ), tf.keras.layers.ConvLSTM2D( filters=4, kernel_size=(3, 3), padding='same', return_sequences=False ), tf.keras.layers.GlobalAveragePooling2D(), tf.keras.layers.Dense(1, activation='sigmoid') ]) model.summary()

Результат выполнения кода:

Model: "sequential" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Layer (type) ┃ Output Shape ┃ Param # ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ conv_lstm2d (ConvLSTM2D) │ (None, 5, 16, 16, 8) │ 3,200 │ ├─────────────────────────────────┼────────────────────────┼───────────────┤ │ conv_lstm2d_1 (ConvLSTM2D) │ (None, 16, 16, 4) │ 1,744 │ ├─────────────────────────────────┼────────────────────────┼───────────────┤ │ global_average_pooling2d │ (None, 4) │ 0 │ ├─────────────────────────────────┼────────────────────────┼───────────────┤ │ dense (Dense) │ (None, 1) │ 5 │ └─────────────────────────────────┴────────────────────────┴───────────────┘ Total params: 4,949 Trainable params: 4,949 Non-trainable params: 0

Смотрите также

  • слой LSTM,
    который реализует рекуррентный слой долгой краткосрочной памяти
  • слой Conv2D,
    который выполняет двумерную свертку над изображениями
  • слой Conv3D,
    который выполняет трехмерную свертку над объемными данными
  • слой TimeDistributed,
    который применяет слой к каждому временному шагу последовательности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить