Вы упомянули спецификацию класса, но я не думаю, что это проблема категоризации классов. Я думаю, что было бы лучше рассматривать вход как X, а выход - как sqr (X). Тогда это становится проблемой аппроксимации общей функции.
Однако существует проблема с этой конкретной проблемой. Нейронные сети плохо подходят для функций с неограниченным вводом/выводом. Выход нейронной сети обычно ограничен диапазоном его функции активации, а входное значение обычно масштабируется до некоторого разумного диапазона. Предполагая, что вы используете активацию по умолчанию (симметричный сигмоид), ваш выход ограничен (-1, 1). Если у вас ограниченный диапазон целых чисел, которые вы хотите использовать, вы все равно можете это сделать, но вам придется масштабировать входы и выходы соответственно.
Если вы используете этот метод, то будет один входной узел и один выходной узел, соответствующий масштабированным версиям X и sqr (X) соответственно. OpenCV будет пытаться позаботиться о масштабировании для вас автоматически. Вероятно, вам лучше доверять этому, ЕСЛИ вы планируете предоставлять несколько разных наборов данных обучения. Различные наборы могут иметь разные распределения, следовательно, различный масштаб.