В отличие от традиционных авто-кодеров, почему некоторые авто-кодеры имеют увеличивающийся размер слоя в кодере и уменьшающийся размер слоя в декодере? - PullRequest
1 голос
/ 21 февраля 2020

Я думал, что в структуре автоэнкодера размер слоя в кодере обычно уменьшается, так что мы получаем сжатое скрытое представление входа как выхода кодера. Но я видел некоторые структуры автоэнкодеров, относящиеся к противоположному случаю, то есть размер слоя увеличивается в кодере и уменьшается в декодере.

Например, см. Следующую структуру автоэнкодера:

import tensorflow as tf

# Input tensor: 4 matrices with 10 timesteps and 128 features
x = tf.random.normal((4, 10, 128))

# Encoder
conv1 = tf.keras.layers.Conv1D(16, 3, padding='same', activation='relu')(x) # shape: (4, 10, 16)

conv2 = tf.keras.layers.Conv1D(32, 3, padding='same', activation='relu')(conv1)
maxpool2 = tf.keras.layers.MaxPool1D(2, 2)(conv2) # shape: (4, 5, 32)

conv3 = tf.keras.layers.Conv1D(64, 3, padding='same', activation='relu')(maxpool2) # shape: (4, 5, 64)

encoded = tf.keras.layers.MaxPool1D(2, 2)(conv3) # shape: (4, 2, 64)

# Decoder
# Structure symmetric to that of the encoder
...

Поскольку форма скрытого представления ( закодировано из вышеприведенного кода) изменилась с (4, 10, 128) (размер ввода) на (4, 2, 64), я понимаю, что уменьшение размеров было успешно достигнуто. Но каков эффект увеличения размера слоя кодера (другими словами, выходной размер изменяется следующим образом: 128 -> 16 -> 32 -> 64), в отличие от того, что мы получили бы, используя традиционный автоэнкодер (в другом словами, размер вывода будет меняться следующим образом: 128 -> 64 -> 32 -> 16)?

...