Я тренирую регрессионную модель, которая принимает приближенные веса для уравнения: Y = R + B + G Для этого я предоставляю заранее определенные значения R, B и G и Y, кактренировочные данные.
R = np.array([-4, -10, -2, 8, 5, 22, 3], dtype=float)
B = np.array([4, -10, 0, 0, 15, 5, 1], dtype=float)
G = np.array([0, 10, 5, 8, 1, 2, 38], dtype=float)
Y = np.array([0, -10, 3, 16, 21, 29, 42], dtype=float)
Тренировочная партия состояла из массива 1x3, соответствующего I-му значению R, B и G.
RBG = np.array([R,B,G]).transpose()
print(RBG)
[[ -4. 4. 0.]
[-10. -10. 10.]
[ -2. 0. 5.]
[ 8. 0. 8.]
[ 5. 15. 1.]
[ 22. 5. 2.]
[ 3. 1. 38.]]
Я использовал нейронную сеть с 3 входами, 1 плотныйслой (скрытый слой) с двумя нейронами и выходной слой (выходной) с одним нейроном.
hidden = tf.keras.layers.Dense(units=2, input_shape=[3])
output = tf.keras.layers.Dense(units=1)
Далее я обучил модель
model = tf.keras.Sequential([hidden, output])
model.compile(loss='mean_squared_error',
optimizer=tf.keras.optimizers.Adam(0.1))
history = model.fit(RBG,Y, epochs=500, verbose=False)
print("Finished training the model")
График потерь против эпохи былкак обычно, убывающий и затем ровный.
Но когда я тестировал модель, используя случайные значения R, B и G как
print(model.predict([[1],[1],[1]]))
, ожидая, что выходной сигнал будет 1 + 1 + 1= 3, но получил Значение Ошибка:
ValueError: Error when checking input: expected dense_2_input to have shape (3,) but got array with shape (1,)
Есть идеи, где я могу ошибаться?
Удивительно, но единственный вход, на который он реагирует, это сами данные обучения.то есть
print(model.predict(RBG))
[[ 2.1606684e-07]
[-3.0000000e+01]
[-3.2782555e-07]
[ 2.4000002e+01]
[ 4.4999996e+01]
[ 2.9000000e+01]
[ 4.2000000e+01]]