【发布时间】:2019-07-09 13:26:13
【问题描述】:
我正在尝试创建一个 seq2seq 网络,该网络具有此 machinelearningmastery 博客中定义的网络架构作为主干。基本上原始示例使用输入 6D 和输出 3D 序列,而我的使用 32D 和输出 32D。
更准确地说,原始模型使用 6 个整数的随机整数(取值范围从 1 到 50)序列。我的模型使用 32D 值(值范围为 0-255)。
在观看模型训练时,我注意到有两个判断收敛的标准:loss 和指标(通常是准确度)。典型的信息是这样的:
99776/100000 [============================>.] - ETA: 0s - loss: 0.0223 - acc: 0.9967
99904/100000 [============================>.] - ETA: 0s - loss: 0.0223 - acc: 0.9967
100000/100000 [==============================] - 40s 400us/step - loss: 0.0223 - acc: 0.9967
好的,在(简单)博客示例中,我可以看到 loss 下降,而 acc 同时上升到 1。虽然在我的情况下(这是一个更难解决的问题),但与loss 相比,我可以看到loss 下降并且准确度上升到1.0 的值相当快。我对这些信息消息进行了一些观察:
- 经过一些迭代,我的准确度可以达到
1.0和我的loss仍然肯定高于零阈值(例如0.0222)。我的意思是我没有得到loss的数量级,例如1e-5之类的。 - 在每个 epoch 开始时,似乎都有损失,而且肯定存在准确度差距。我在here 中找到了一个很好的解释。总而言之,它表示在一个纪元期间,显示的
loss和acc是所有批次的平均值,而在每个新纪元,它都会初始化为实际的当前值。 - 即使
acc固定为1.0并且我的训练数据表现出色,我也没有得到如此高的结果来证明如此高的准确性。
那么,我的问题是,这个准确度到底是什么?我知道它是meant only for the programmer(我就是)并且模型本身不使用它(与使用的loss不同)但是它是如何计算的或者它代表什么?在我的例子中,我有 0-255 范围内的 32D 值序列,因此每个序列都表示为大小为 (32, 257) 的数组。那么,准确度 0.99 意味着 100 个序列中有 99 个匹配?是这样吗?
【问题讨论】:
-
这里的回答可能有用(免责声明:我的),至少对于高层次的理解:Loss & accuracy - Are these reasonable learning curves?