Автоэнкодер для многомерного массива - PullRequest
0 голосов
/ 28 марта 2020

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

У меня есть массив с формой (104104, 100, 85), я сделал горячее кодирование. Итак, у меня есть 104 тыс. Строк, каждая из которых содержит 100 элементов (это длина моих строк и это измерение, которое я хочу сжать), и каждый из этих элементов имеет 85 дочерних элементов (это мой набор символов)

Теперь я хочу сжать «размерность длины», скажем, 15. Так что хочу, чтобы вывод кодированного слоя был (15, 85)

Я взял пример из https://blog.keras.io/building-autoencoders-in-keras.html

encoding_dim = 15

input_vec = Input(shape=(100, 85))

encoded = Dense(encoding_dim, activation='relu')(input_vec)

decoded = Dense(100, activation='softmax')(encoded)

autoencoder = Model(input_vec, decoded)

encoder = Model(input_vec, encoded)

encoded_input = Input(shape=(encoding_dim,))

decoder_layer = autoencoder.layers[-1]

decoder = Model(encoded_input, decoder_layer(encoded_input))

encoder.summary () печатает следующее:

Layer (type)                 Output Shape              Param #   
=================================================================
input_6 (InputLayer)         (None, 100, 85)           0         
_________________________________________________________________
dense_7 (Dense)              (None, 100, 15)           1290      
=================================================================
Total params: 1,290
Trainable params: 1,290
Non-trainable params: 0
_________________________________________________________________

Конечно, это не сработает, потому что оно не подходит. Я хочу, чтобы X (None, X, 85) был сжат не последним измерением. Как мне этого добиться? Нужно ли выравнивать массив?

Спасибо

...