Нейронные сети не очень хорошо справляются с задачей, в которой у вас непостоянное поведение в ваших данных.Особенно на угловых данных вроде твоих.Чтобы обойти вашу проблему, вы можете сначала выполнить тригонометрическое преобразование целевого значения.На самом деле это не что иное, как применение ядра к вашим данным.Допустим, ваши периодические выходные данные y=0...π
.Тогда ваша новая цель - это двузначный вектор y_hat=[sin(2y), cos(2y)]
.Позвольте вашей сети тренироваться против y_hat
, пока вы выполняете обратное преобразование y=.5 atan2(y_hat)
во время вывода, чтобы получить исходное значение.