我正在尝试创建一个 seq2seq 网络,该网络以本machinelearningmastery博客中定义的网络架构为骨干。基本上,原始示例使用输入 6D 和输出 3D 序列,而我的使用 32D 和输出 32D。更准确地说,原始模型使用 6 个整数的随机整数(值范围从 1 到 50)序列。我的模型使用 32D 值(值范围为 0-255)。当我观看模型训练时,我注意到有两个判断收敛的标准:loss和指标(通常是准确性)。典型的信息是这样的:99776/100000 [============================>.] - ETA: 0s - loss: 0.0223 - acc: 0.996799904/100000 [============================>.] - ETA: 0s - loss: 0.0223 - acc: 0.9967100000/100000 [==============================] - 40s 400us/step - loss: 0.0223 - acc: 0.9967好的,在(简单的)博客示例中,我可以看到loss下降同时acc上升到 1。虽然在我的情况(这是解决一个困难的问题),我可以看到loss下降和精度上升到价值1.0相当迅速地比较的loss。我对这些信息消息进行了一些观察:经过一些迭代后,我的准确度可以达到1.0并且我loss 仍然肯定高于零阈值(例如0.0222)。我的意思是我没有得到例如或其他东西loss的数量级1e-5。在每个 epoch 开始时,似乎都有一个损失,而且绝对是准确率差距。我在这里找到了一个很好的解释。在一个总结,它说,一个时代在loss和acc显示是平均值在所有批次,而在每一个新的时代,这个被初始化为实际电流值。即使acc固定为1.0并且我在我的训练数据上表现出色,我也没有得到如此高的结果来证明如此高的准确性。所以,我的问题是这种准确度到底显示了什么?我知道它仅适用于程序员(我就是这样)并且模型本身不使用它(与loss使用的不同)但它是如何计算的或它代表什么?在我的例子中,我有 32D 值的序列,范围从 0-255,所以每个序列都表示为 size 的数组(32, 257)。那么,准确度 0.99 意味着 100 个序列中有 99 个匹配?是这样吗?
1 回答

POPMUISE
TA贡献1765条经验 获得超5个赞
所以,我的问题是这种准确度到底显示了什么?
正如此处的答案中所述,keras 选择的实际准确度指标取决于您选择的损失。我会猜到在你的情况下,它默认为categorical_accuracy:
def categorical_accuracy(y_true, y_pred): return K.cast(K.equal(K.argmax(y_true, axis=-1), K.argmax(y_pred, axis=-1)), K.floatx())
这意味着它比较 y_true 和 y_pred 中的最大值是否出现在同一位置。当然,这对你来说意义不大。
添加回答
举报
0/150
提交
取消