Класс SpatialDropout2D
Класс SpatialDropout2D применяется к данным
и выполняет пространственный дропаут для
четырехмерных тензоров формы
(batch, height, width, channels).
В отличие от обычного Dropout, который
обнуляет отдельные элементы, этот слой отключает
целые карты признаков целиком. Первым параметром
передается вероятность отключения rate,
вторым - форма входных данных input_shape.
Синтаксис
tf.keras.layers.SpatialDropout2D(rate, [input_shape])
Пример
Давайте создадим слой пространственного
дропаута с вероятностью отключения
0.3 и применим его к тензору:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.SpatialDropout2D(rate=0.3)
t = tf.constant([[[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]]])
res = layer(t, training=True)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[0. 0.]
[0. 0.]
[0. 0.]]]], shape=(1, 1, 3, 2), dtype=float32)
Пример
Давайте применим слой в режиме предсказания
training=False, когда дропаут не активен:
import tensorflow as tf
layer = tf.keras.layers.SpatialDropout2D(rate=0.3)
t = tf.constant([[[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]]])
res = layer(t, training=False)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[1. 2.]
[3. 4.]
[5. 6.]]]], shape=(1, 1, 3, 2), dtype=float32)
Пример
Давайте встроим слой в модель и посмотрим на его параметры:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.SpatialDropout2D(rate=0.5, input_shape=(4, 4, 3))
])
print(model.output_shape)
Результат выполнения кода:
(None, 4, 4, 3)
Смотрите также
-
класс
Dropout,
который применяет обычный дропаут к элементам -
класс
Conv2D,
который выполняет двумерную свертку -
класс
GaussianDropout,
который применяет мультипликативный гауссов дропаут -
класс
GaussianNoise,
который добавляет аддитивный гауссов шум