Я написал две простые модели для прогнозирования линейных данных. Во-первых, создайте 1-выход и работайте правильно, в отличие от второго, который производит 2-выход (но я использую только первый выход).
model1 = Sequential([
Dense(1, input_shape=(1,))
])
model2 = Sequential([
Dense(2, input_shape=(1,))
])
Я использую стандартную mse в обоих случаях.
def mse1(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
def mse2(y_true, y_pred):
return K.mean(K.square(y_pred[:,0] - y_true), axis=-1)
model1.compile(optimizer='adam', loss=mse1)
model2.compile(optimizer='adam', loss=mse2)
model1.fit(np.asarray(range(len(data)),dtype=np.float32), np.asarray(data), epochs=10000, batch_size=100)
model2.fit(np.asarray(range(len(data)),dtype=np.float32), np.asarray(data), epochs=10000, batch_size=100)
out1 = model1.predict(np.asarray(range(len(data))))
out2 = model2.predict(np.asarray(range(len(data))))[:,0]
plt.scatter(range(len(l)), data, color='r')
plt.scatter(range(len(l)), out1, color='b')
plt.scatter(range(len(l)), out2, color='g')
plt.show()
Я пытаюсь повторить этот эксперимент несколько раз и всегда получаю один и тот же результат - синий (модель1) работает правильно, но зеленый (модель2) находится ниже большинства точек данных.