Как бороться с исчезающей проблемой градиента в вариационном автоэнкодере (VAE)? - PullRequest
0 голосов
/ 17 сентября 2018

Я знаю, что есть некоторые методы, помогающие устранить исчезающие проблемы градиента, такие как relu, пакетная нормализация, resnet. Я пробовал первые два, но моя сеть все еще испытывает исчезающую проблему градиента: градиент составляет приблизительно 0 в первых нескольких слоях. Я не пробовал реснет, так как не уверен, стоит ли пробовать его в VAE, потому что он не углубляет карту возможностей.

Вот моя архитектура для сети кодировщика

# x = 320, 320, 3
x = conv_bn_relu(x, 16, 3, 2)                  # x = 160, 160, 16
x = conv_bn_relu(x, 32, 3, 2)                  # x = 80, 80, 32
x = conv_bn_relu(x, 64, 3, 2)                  # x = 40, 40, 64
x = conv_bn_relu(x, 128, 3, 2)                 # x = 20, 20, 128
x = conv_bn_relu(x, 256, 3, 2)                 # x = 10, 10, 256
x = conv_bn_relu(x, 512, 3, 2)                 # x = 5, 5, 512
x = conv(x, 2 * 128, 5, padding='valid')       # 128 is the size of latent vector z

, где conv_bn_relu состоит из сверточного уровня с заданными аргументами, уровня пакетной нормализации и уровня реляции. Декодер аналогичен, за исключением использования сверточного транспонированного слоя.

Я действительно надеюсь, что кто-нибудь даст мне еще совет.

...