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