首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用BP神经网络进行深度学习时,在训练时获得平坦的误差曲线

使用BP神经网络进行深度学习时,在训练时获得平坦的误差曲线
EN

Stack Overflow用户
提问于 2019-02-27 13:44:30
回答 1查看 225关注 0票数 0

当我使用传统的BP神经网络进行深度学习时,我总是得到误差曲线的平坦曲线。我使用的是Keras序列模型和Adam optimiser。神经网络在训练和测试中提供了80%的总体准确率。谁能解释为什么误差曲线是平坦的(见附图)?另外,有什么方法可以提高我的成绩吗?

代码语言:javascript
运行
复制
def build_model():
  model = keras.Sequential()
  model.add(layers.Dense(128, activation=tf.nn.relu, input_shape=len(normed_train_data.keys())]))
  model.add(layers.Dense(128,activation=tf.nn.relu, input_shape=(1,)))
  model.add(layers.Dense(4))
  model.compile(loss='mean_squared_error', optimizer='Adam',metrics=['mae', 'mse','accuracy'])
  return model

def plot_history(history):
   hist = pd.DataFrame(history.history)
   hist['epoch'] = history.epoch
   plt.figure()
   plt.xlabel('Epoch')
   plt.ylabel('Mean Abs Error [per]')
   plt.plot(hist['epoch'], hist['mean_absolute_error'],label='Train Error')
   plt.plot(hist['epoch'], hist['val_mean_absolute_error'],label = 'Val Error')
   plt.legend()
   plt.ylim([0,200])
   plt.show()

在main函数中,

代码语言:javascript
运行
复制
model = build_model()
model.summary()
history = model.fit(normed_train_data, train_labels,epochs=EPOCHS,validation_split = 0.2, verbose=0,callbacks=[PrintDot()])
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
plot_history(history)

错误图:

Error plot with reduced learning rate

EN

回答 1

Stack Overflow用户

发布于 2019-02-27 17:47:48

如果没有更多关于你的数据的信息,很难评估你能分享一个样本吗?但我敢说你的模型很快就不适合了。你可以尝试的东西:

学习优化器模型简化--尝试移除一个层,或者为starters

  • different优化器使用较少的单元,尝试使用具有不同学习rates

  • different指标的
  • (尝试逐个移除)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54898795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档