Я хочу обучить автокодер для сжатия строк, чтобы можно было их визуализировать.
У меня есть массив с формой (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) был сжат не последним измерением. Как мне этого добиться? Нужно ли выравнивать массив?
Спасибо