Нейронная сеть - прогнозирование значений нескольких переменных - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть данные со столбцами A, B, C в качестве входных данных и столбцами D, E, F, G в качестве выходных данных.Стол имеет форму (1000,7).Я хотел бы обучить модель, проверить и проверить ее.

Мои данные:

A = [100, 120, 140, 160, 180, 200, 220, 240, 260, 280];
B = [300, 320, 340, 360, 380, 400, 420, 440, 460, 480];
C = [500, 520, 540, 560, 580, 600, 620, 640, 660, 680]; 

Myжелаемый результат:

Для каждой комбинации A, B, C -> я получаю D, E, F, G в качестве выходных данных (например) :

D = 2.846485609 
E = 5.06656901
F = 3.255358183
G = 5.464482379)

Также для каждой отдельной комбинации A, B, C;У меня другой набор выходов (D, E, F, G).

Мой вопрос: Можно ли обучить нейронную сеть, используя эту опытную сеть для прогнозирования новых значений D, E, F, G;для новой комбинации A, B, C?

1 Ответ

1 голос
/ 24 сентября 2019

Проблема относится к категории многовариантной регрессии, поскольку выходы имеют непрерывное значение.Следовательно, вы можете обучить нейронную сеть (NN), имеющую 4 выходных узла и вектор входных объектов размера 4. Пример модели NN, имеющей один скрытый слой, использующий тензор, выглядит следующим образом:

import itertools
import numpy as np
from sklearn.preprocessing import StandardScaler
from tensorflow.python.keras.layers import Input, Dense
from tensorflow.python.keras.models import Model

A = [100, 120, 140, 160, 180, 200, 220, 240, 260, 280]
B = [300, 320, 340, 360, 380, 400, 420, 440, 460, 480]
C = [500, 520, 540, 560, 580, 600, 620, 640, 660, 680]

X_train = np.array(list(itertools.product(A, B, C)))
# X_train = np.random.random(size=(1000,3))
scaler = StandardScaler()
X = scaler.fit_transform(X_train)

Y_train = np.random.randint(0, 100, size=(1000, 4)).astype(float)  # Should load original label

X_test = np.random.random(size=(100, 3))
Y_test = np.random.randint(0, 100, size=(100, 4)).astype(float)

input = Input(shape=(3,))
hidden_layer_1 = Dense(25, activation='relu')(input)
output = Dense(4)(hidden_layer_1)

model = Model(inputs=input, outputs=output)
model.compile(
    optimizer='adam',
    loss=['mean_squared_error']
)

history = model.fit(X_train, Y_train, epochs=1000, batch_size=8)

result = model.predict(X_test)
...