#python #tensorflow #keras #neural-network #regression
#python #тензорный поток #keras #нейронная сеть #регрессия
Вопрос:
Я написал две простые модели для прогнозирования линейных данных. Во-первых, создайте 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()
Я пытаюсь повторить этот эксперимент несколько раз и всегда получаю один и тот же результат — синий (model1) работает правильно, но зеленый (model2) находится ниже большинства точек данных.
Ответ №1:
В плотных слоях в model1 есть только один модуль, но в model2 их два. Это означает, что у вас есть больше параметров для изучения в model2. Model2 в вашем случае более надежен, чем model1. Но обе ваши модели имеют очень мало параметров для изучения. Вы можете увеличить единицы или уровни для повышения производительности, но будьте осторожны с проблемами переоснащения