我写了两个简单的模型来预测线性数据。首先,产生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()
答案 0 :(得分:1)
在密集层中,model1中只有一个单元,而model2中有两个单元。这意味着您需要在model2中学习更多参数。在您的情况下,Model2比model1更健壮。但是,您的两个模型都几乎没有要学习的参数。 您可以增加单位或层数来提高性能,但请注意overfitting issues