Я пытаюсь выяснить, почему выходные данные моей модели ML отражают входные данные. Я использую очень простую модель, определенную с помощью Pytorch:
class LinearRegressionModel(torch.nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearRegressionModel, self).__init__()
self.linear = torch.nn.Linear(input_dim, output_dim)
def forward(self, x):
y_pred = self.linear(x)
return y_pred
Как вы можете видеть на этом изображении ( Целевые данные и данные объектов модели ML ), входные данные нормализуются с использованием пакет Sklearn MinMaxScaler. Я использую MSELoss в качестве критерия, а Адам - в качестве оптимизатора.
Данные обрабатываются с 70% данных при lr = 0,1. После обучения в 2000 эпох я беру выходные данные и выполняю обратное преобразование, чтобы изменить масштаб data.
train_predict = model(dataX)
data_predict = train_predict.data.numpy()
dataY_plot = dataY.data.numpy()
trainPredict_dataset_like = np.zeros(shape=(len(target_data_reshaped), 2) )
trainPredict_dataset_like[:, 1] = data_predict[:,0]
# inverse transform and then select the right field
data_predict = sc.inverse_transform(trainPredict_dataset_like)[:,1]
trainPredict_dataset_like[:, 1] = dataY_plot[:,0]
dataY_plot = sc.inverse_transform(trainPredict_dataset_like)[:,1]
Как видно из выходного представления ( Вывод модели ML с ожидаемым и полученным значением ), я провожу модель через весь набор данных и отметьте пунктирной красной линией точку, где заканчиваются данные поезда и начинаются тестовые данные.
Почему прогнозируемый выходной сигнал отражает данные объекта? Спасибо!