Улучшить результат нейронной сети на Python для решения линейного уравнения
Столкнулся с проблемой при написании нейронной сети на Питоне. Я выбрал себе цель достигнуть получения значения уравнения Y = Ax + B Где А, х и B - это входные данные, А Y выходные.
Загружаю нужные библиотеки
import numpy as np
from sklearn.neural_network import MLPRegressor
Задаю функцию, с помощью нее я буду формировать входные данные и выходные данные для обучения, то есть здесь будет теоретический(максимально достоверный результат), а не экспериментальный
def function(A,B,x):
Y = A*x + B
return Y
Здесь я с помощью функции рандома задаю A, B, x, то есть входные данные, их я буду далее вставлять в верхнюю функцию и высчитывать выходную Y.
x = np.random.randint(-100, 100, 10000)
A = np.random.randint(-100, 100, 10000)
B = np.random.randint(-100,100, 10000)
Получаю результат Y
Y = function(A,B,x)
Для верной работы нейронной сети транспонирую входные данные
X = np.array([x,A,B]).T
Выбираю модель нейронной сети
mlp = MLPRegressor(hidden_layer_sizes=(100, 100), tol=1e-2, max_iter=2000, random_state=0)
Произвожу обучение
mlp.fit(X, Y)
Теперь самое главное, я предсказываю данные
x_predict = np.array([15,2,3],dtype = int).reshape(1,-1)
mlp.predict(x_predict)
Для примера я взял х, А, В = 15, 2, 3. Очевидно, что ответ будет 33 Но нейронная сеть выдает следующий ответ
array([-25.81754109])
Когда я брал значения, для обучения в интервале (-20, 20), значения получались достаточно близкие, но когда использовал разброс в диапазоне (-100, 100), получается нелепость.
Следовательно: Как мне оптимизировать нейронную сеть? Стоит ли изменить модель или оставить, как есть, только поменяв параметры? Буду очень рад выслушать вашу критику и советы.