首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras模型评估中的损失

Keras模型评估中的损失
EN

Stack Overflow用户
提问于 2018-11-27 07:24:13
回答 1查看 6.8K关注 0票数 5

我正在使用Keras loss='binary_crossentropy'optimizer=tf.keras.optimizers.Adam进行二进制分类,最后一层是keras.layers.Dense(1, activation=tf.nn.sigmoid)

据我所知,loss值被用于评估训练阶段的模型。但是,当我将Keras模型评估用于测试数据集(例如,m_recall.evaluate(testData,testLabel) )时,也存在loss值,并伴随着类似下面的输出的accuracy值。

代码语言:javascript
复制
test size:  (1889, 18525)
1889/1889 [==============================] - 1s 345us/step
m_acc:  [0.5690245978371045, 0.9523557437797776]
1889/1889 [==============================] - 1s 352us/step
m_recall:  [0.24519687695911097, 0.9359449444150344]
1889/1889 [==============================] - 1s 350us/step
m_f1:  [0.502442331737344, 0.9216516675489677]
1889/1889 [==============================] - 1s 360us/step
metric name:  ['loss', 'acc']

在测试期间,loss的含义/用法是什么?为什么它这么高(例如0.5690 in m_acc)?准确性评估对我来说似乎很好(例如,0.9523 in m_acc),但我也担心loss,它是否会使我的模型表现糟糕?

P.S. m_accm_recall等就是我给我的模型命名的方式(他们在GridSearchCV中接受了不同的度量)

更新:我刚刚意识到loss值不是百分比,那么它们是如何计算的呢?对于当前的价值观,它们是否足够好,还是我需要更多地优化它们?

进一步阅读的建议也很感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 10:28:13

在定义机器学习模型时,我们希望有一种方法来衡量模型的性能,以便与其他模型进行比较,选择最优的模型,并确保其足够好。因此,我们定义了一些度量标准,如精度(在分类上下文中),即模型正确分类样本的比例,以衡量我们的模型的性能以及它是否适合我们的任务。

尽管我们确实可以理解这些度量标准,但问题是模型的学习过程不能直接使用它们来调整模型的参数。相反,我们定义了其他的度量,通常称为损失函数或目标函数,它们可以被训练过程直接使用(即优化)。这些函数的定义通常是这样的:当它们的值较低时,我们就会得到很高的精度。这就是为什么你通常会看到机器学习算法试图最小化一个损失函数,并期望提高精度。换句话说,模型是通过优化损失函数间接学习。损失值在模型的训练过程中很重要,例如,如果它们没有下降或波动,这就意味着有一个问题需要解决。

因此,我们最终(即在测试模型时)关注的是我们最初定义的度量的价值(比如准确性),我们并不关心损失函数的最终价值。这就是为什么您没有听到“数据集上特定模型的损失值为8.732”的原因!这并不能告诉你模型是伟大的,好的,坏的还是可怕的。相反,您会听到“此模型在数据集上以87%的精度执行”。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53494627

复制
相关文章

相似问题

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