Было бы очень полезно, если бы вы могли публиковать информацию о прогрессировании потери и MSE (как в обучающем, так и в проверочном / тестовом наборе) по ходу обучения. Более того, было бы лучше, если бы вы могли визуализировать его согласно https://machinelearningmastery.com/display-deep-learning-model-training-history-in-keras/ и опубликовать визуализацию здесь.
А пока, основываясь на фактах: 1) Вы говорите о потере не уменьшается (я предполагаю на тренировочном наборе, во время обучения, основываясь на ваших аргументах компиляции). 2) Вы говорите, что «точность» прогноза на вашем тестовом наборе плохая. 3) Мой опыт / интуиция (не эмпирическая оценка) подсказывает мне, что ваша двухслойная плотная модель слишком мала, чтобы можно было уловить сложность, присущую вашим данным. АКА Ваша модель страдает от слишком высокого смещения https://towardsdatascience.com/understanding-the-bias-variance-tradeoff-165e6942b229
Самая быстрая и простая вещь, которую вы можете попробовать, это попытаться добавить как больше слоев, так и больше узлов к каждому слою.
Однако я должен отметить, что существует много причинно-следственной информации, которая может повлиять на расстояние вождения и время в пути , превышающее только расстояние между двумя координатами , которая может быть функцией, которую ваша нейронная сеть будет наиболее легко извлечь. Например, если вы едете по шоссе или по обочине дороги, светофоры c, повороты дорог или поворот или go прямо ... из всего этого выведите данные, для которых вам понадобятся огромные объемы данных. (примеры) на мой взгляд. Если бы вы могли добавить входные столбцы с, например, отсутствием расстояния до ближайшего шоссе из обеих точек, вы могли бы тренироваться с меньшим количеством данных
Я бы также рекомендовал вам дважды проверить, что вы кормите в качестве ввода то, что вы думаю, что вы кормите (и его форму), а также вам следует использовать некоторую стандартизацию из функции sklearn , которая может помочь модели учиться быстрее и быстрее сходиться к более высокой "точности".
Если и когда вы опубликуете больше кода или истории тренировок, я могу помочь вам больше (а также, сколько обучающих образцов).
РЕДАКТ. 1: Попробуйте изменить размер партии на большее, желательно batch_size=32
если он умещается в вашей памяти. Вы можете использовать небольшой размер пакета (например, 1) при работе с вводом с «богатой информацией», например с изображением, но при использовании данных с очень плохой информацией, таких как 4 числа с плавающей запятой (2 координаты), градиент будет указывать на каждую группу ( с batch_size=1
) практически случайным (псевдо ...) направлением и не обязательно приближаться к локальному минимуму. Только принимая градиент на общую потерю большей партии (например, 32 и, возможно, больше), вы получите градиент, который по крайней мере приблизительно указывает в направлении локального минимума и сходится к лучшему результату. Кроме того, я предлагаю вам не связываться со скоростью обучения вручную и, возможно, переключиться на оптимизатор, такой как «Адам» или «RMSProp».
Edit 2 : @Desertnaut сделал отличное замечание, которое я полностью пропустил, исправление, без которого ваш код не будет работать должным образом. Он заслуживает похвалы, поэтому я не буду включать его здесь. Пожалуйста, обратитесь к его ответу. Кроме того, не забывайте увеличивать размер пакета, а не «связываться вручную» со скоростью обучения, например, «Адам» сделает это за вас.