繁体   English   中英

Keras:令人惊讶的比较简单神经网络2输出和1输出

[英]Keras: Suprising compare simple neural network 2-output and 1-output

我编写了两个简单的模型来预测线性数据。 首先,产生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)在大多数数据点下方。 型号1与型号2

在密集层中,model1中只有一个单元,而model2中有两个单元。 这意味着您需要在model2中学习更多参数。 在您的情况下,Model2比model1更健壮。 但是,您的两个模型都几乎没有要学习的参数。 您可以增加单位或层数以提高性能,但请注意过拟合的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM