Автоэнкодер в Керасе с низкими потерями на валидацию, но реконструкция это просто шум - PullRequest
0 голосов
/ 16 октября 2018

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

#input_wave = Input(shape=(7500,))
encoded_1 = Dense(1000, activation='tanh',input_shape=(7500,))
encoded_2 = Dense(500, activation='tanh')
encoded_3 = Dense(300, activation='tanh')
encoded_4 = Dense(128, activation='tanh')

decoded_3 = Dense(300, activation='tanh')
decoded_2 = Dense(500, activation='tanh')
decoded_1 = Dense(1000, activation='tanh')
decoded_0 = Dense(7500, activation='linear')

Это функция потерь, которую я использую

#autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')

autoencoder.fit(x_train, x_train,
            epochs=15,
            batch_size=300,
            shuffle=True,
            validation_data=(x_test, x_test),
            callbacks=[TensorBoard(log_dir='/tmp/autoencoder')])

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

, но когда я пытаюсь использовать прогнозирование и реконструкцию волны, это кажется просто шумом. Прогнозируемая и реальная волна времени

что я делаю не так?любые выводы будут высоко оценены.

обновление: после изменения функции потерь на MSE и оптимизатора на adam я увидел перегрузку сети.Потеря проверки никогда не снижается значительно.пожалуйста, посмотрите на прикрепленный скриншот. введите описание изображения здесь

Обновление Я сократил длину своих данных до 2500, и она начала работать.Я думаю, что моя модель не была достаточно сложной, чтобы сжать 7500 до 128, или, возможно, это просто невозможно.Поэтому я использую 3 отдельные модели для сжатия данных.Спасибо всем.

...