【问题标题】:What is training accuracy and training loss and why we need to compute them?什么是训练准确度和训练损失,为什么我们需要计算它们?
【发布时间】:2021-01-15 03:44:22
【问题描述】:

我是 Lstm 和机器学习的新手,我正在尝试理解其中的一些概念。下面是我的 Lstm 模型的代码。

Lstm 模型:

model = Sequential()
model.add(Embedding(vocab_size, 50, input_length=max_length-1))
model.add(LSTM(50))
model.add(Dropout(0.1))
model.add(Dense(vocab_size, activation='softmax'))

early_stopping = EarlyStopping(monitor='val_loss', patience=42)                                                                                                            
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(X, y, validation_split=0.2, epochs=500, verbose=2,batch_size = 20)

以下是我的输出示例:

以及训练/测试精度和训练/测试损失图:

我的理解(如果我错了,请纠正我)是 val_loss 和 val_accuracy 是测试数据的损失和准确性。我的问题是,什么是训练精度和训练损失以及这些值是如何计算的?谢谢。

【问题讨论】:

    标签: python lstm


    【解决方案1】:

    1. loss 和 val_loss-

    在深度学习中,loss 是神经网络试图最小化的值。这就是神经网络通过以减少损失的方式调整权重和偏差来学习的方式。

    lossval_loss 不同,因为前者应用于train set,后者应用于test set。因此,后者很好地表明了模型如何处理看不见的数据。

    2。准确性和 val_accuracy-

    再一次,acctraining data 上,val_accvalidation data 上。最好依靠 val_acc 来公平地表示模型性能,因为好的神经网络最终会 100% 拟合训练数据,但在看不见的数据上表现不佳。

    val_acc 停止增加时应该停止训练,否则你的模型可能会过度拟合。您可以使用 earlystopping 回调来停止训练。

    3.为什么我们需要训练准确度和损失?

    这不是一个有意义的评估指标,因为具有足够参数的神经网络基本上可以记住训练数据的标签,然后对以前未见过的示例进行随机猜测。

    但是,在训练期间以某个固定时间间隔监控 accuracyloss 会很有用,因为它可以指示后端是否按预期运行以及是否需要停止训练过程。

    请参阅here 了解有关提前停止的详细说明。

    4.准确率和损失是如何计算的?

    根据在编译模型时指定的损失和指标,在您训练时计算损失和准确率。在训练之前,您必须编译模型以配置学习过程。这允许您指定optimizerloss functionmetrics,这反过来又是模型拟合函数如何知道要使用什么损失函数、要跟踪什么指标等。

    loss 函数(如二进制交叉熵)文档可在 here 找到,指标(如 accuracy)文档可在 here 找到。

    【讨论】:

    • 非常感谢您的快速回复。尽管如果您能解释一下为什么我们需要训练准确度和损失,我将不胜感激,因为当我们训练网络时,我们不会尝试预测标签,我们只是在训练模型在测试数据上做到这一点,所以为什么存在训练准确度和损失首先是神经网络如何计算这些值。
    • 非常感谢!
    猜你喜欢
    • 2015-06-27
    • 2020-09-05
    • 2017-04-23
    • 2020-01-06
    • 2016-08-26
    • 2021-04-06
    • 1970-01-01
    • 2019-07-25
    • 2020-10-24
    相关资源
    最近更新 更多