Прежде всего, у вас есть ~ 100 тыс. Образцов.Начните с чего-то меньшего, например со 100 выборок и нескольких эпох, и посмотрите, подходит ли ваша модель к этому меньшему набору обучающих данных (если это невозможно, у вас либо ошибка в коде, либо модель не способна моделировать зависимости [я быперейти ко второму случаю]).Серьезно, начни с этого.И помните о представлении всех ваших классов в этом небольшом наборе данных.
Во-вторых, скрытый размер LSTM может быть слишком мал, у вас есть 18 функций для каждой последовательности, а последовательности имеют длину 20, а скрытые - только 10И вы применяете dropout, чтобы завершить его и еще более упорядочить сеть.
Кроме того, вы можете добавить несколько плотных выходных единиц вместо простого возврата линейного слоя размера 10 x 1
для каждой временной отметки.
И последнее, но не менее важное: вы можете увеличить выборку недостаточно представленных данных.0 class
нужно будет повторить, скажем, 50 раз (или, может быть, 25), class 2
что-то около 4 раз, а ваше - около 10-15 раз, поэтому сеть обучается им.
О, ииспользуйте перекрестную проверку для ваших гиперпараметров, таких как скрытый размер, количество плотных единиц и т. д.
Кроме того, я не знаю, сколько эпох вы обучали этой сети, каков ваш набор тестовых данных (этоВполне возможно, что это только первый класс, если вы не сделали стратификацию).
Я думаю, что это поможет вам начать, заставьте меня сомневаться в комментариях.
РЕДАКТИРОВАТЬ: Когда дело доходит до метрик, вы можете проверить что-то другое, чем просто точность;может быть, оценка F1 и ваш мониторинг потерь + точность, чтобы увидеть, как это работает.Есть и другие доступные варианты, для вдохновения вы можете проверить документацию sklearn , поскольку они предоставляют довольно много вариантов.