Я думал, что в структуре автоэнкодера размер слоя в кодере обычно уменьшается, так что мы получаем сжатое скрытое представление входа как выхода кодера. Но я видел некоторые структуры автоэнкодеров, относящиеся к противоположному случаю, то есть размер слоя увеличивается в кодере и уменьшается в декодере.
Например, см. Следующую структуру автоэнкодера:
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)?