首页 > 解决方案 > 简单的神经网络产生过高的损失值

问题描述

我刚开始使用 Keras,想构建一个超级简单的神经网络。使用 arange 数组作为 x 和 y = x*2,我正在尝试训练我的模型以基于此乘法进行预测。虽然我的模型似乎可以运行并产生结果,但我得到的损失太高了,考虑到模型的简单性,结果很糟糕。知道我在这里做错了什么吗?

x = np.arange(1,100).reshape((99,1))

y = x*2

x_test = np.arange(1,10).reshape((9,1))

y_test = x_test*2



keras.backend.clear_session()

model = Sequential()

model.add(Dense(4,input_dim = 1, activation = 'linear'))

model.add(Dense(4, activation = 'linear'))

model.add(Dense(1, activation = 'linear'))

model.compile(loss='mse',
              optimizer='rmsprop',
              metrics=['accuracy'])

print(model.summary())

model.fit(x, y,
          epochs=3,
          batch_size=32)

score = model.evaluate(x_test, y_test)

model.predict(x_test)

标签: python-3.x

解决方案


基本上你的代码是正确的,它只是没有经过足够的时期来收敛,你可以看到你的模型在第 50 个时期开始改进, 损失改善

在这里你可以看到大约 200 个 Epochs 的损失有了显着改善。 损失大约 250 个 epoch

远离这个

  1. 您的模型需要运行一段时间才能开始收敛。
  2. 那么这是否意味着高数量的时代总是更好?不,因为高时期可能会开始过度拟合您的模型以适应训练数据。

您要做的是在训练和测试/验证准确性之间绘制图表,并找出最适合的点,如果您有任何疑问,请随时发表评论。


推荐阅读