如何用python画深度学习训练图?比如误差,准确率变化曲线之类的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用python画深度学习训练图?比如误差,准确率变化曲线之类的相关的知识,希望对你有一定的参考价值。
参考技术A 用TensorFlow啊,外加个图形包就可以了本回答被提问者采纳使用 BP 神经网络进行深度学习时在训练时获得平坦的误差曲线
【中文标题】使用 BP 神经网络进行深度学习时在训练时获得平坦的误差曲线【英文标题】:Getting flat error curves while training when deep learning with BP neural nets 【发布时间】:2019-07-20 18:44:22 【问题描述】:在使用传统的 BP 神经网络进行深度学习时,我总是得到平坦的错误图曲线。我正在使用带有 Adam 优化器的 Keras 顺序模型。 NN 为训练和测试提供了 80% 的总体准确率。谁能解释为什么误差曲线是平坦的(见附图)?还有什么方法可以提高我的成绩吗?
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()
而在主函数中,
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
【问题讨论】:
【参考方案1】:如果没有关于您的数据的更多信息,很难评估是否可以共享样本?但我冒险猜测您的模型很快就会过拟合。您可以尝试的事情:
模型简化 - 尝试移除一层,或者使用更少的单元来开始 不同的优化器,尝试不同学习率的 sgd 不同的指标(尝试一一删除)【讨论】:
样本输入向量:[9349 8699 8836 13316 12771 0.2022 -0.2097 -0.0209]---特征,样本输出向量:[5.56 13.89 0.00 80.56]---这些是概率值。我正在使用 4,52,995 个样本进行训练。 我在输入网络之前对输入特征进行规范化 我已经尝试过不同数量的层和优化器,但得到的结果几乎相同。 如果它过度拟合,我如何获得相同的测试数据精度(有时更多)?我正在使用 113249 个样本进行测试。 我也不认为,更改指标会改善结果,因为它被记录为:“指标函数类似于损失函数,除了评估指标的结果是训练模型时不使用。”以上是关于如何用python画深度学习训练图?比如误差,准确率变化曲线之类的的主要内容,如果未能解决你的问题,请参考以下文章