【问题标题】:How to use CNTK classification_error()?如何使用 CNTK 分类错误()?
【发布时间】:2017-05-01 18:38:40
【问题描述】:

我正在尝试了解cntk.metrics.classification_error() 的正确用法,并用它来验证一批针对其基本事实的预测。

以下玩具示例(基于Python API docs):

import numpy as np
from cntk.metrics import classification_error

predictions = np.asarray([[1., 2., 3., 4.],[1., 2., 3., 4.],[1., 2., 3., 4.]], dtype=np.float32)
labels = np.asarray([[0., 0., 0., 1.],[0., 0., 0., 1.],[0., 0., 1., 0.]], dtype=np.float32)
classification_error(predictions, labels).eval()

产生以下结果:

array([[ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.]], dtype=float32)

鉴于我想处理大批量,有没有一种方法可以获得一个向量而不是一个看起来效率低下的方阵?

我尝试在调用classification_error() 时使用axis 关键字,但无论我设置axis=0 还是axis=1,我都会得到一个空结果。

【问题讨论】:

    标签: cntk


    【解决方案1】:

    发生这种情况是因为 CNTK 试图变得用户友好,最终对类型感到困惑 :-) 您可以判断,因为分类错误甚至不正确。

    如果您添加一点输入信息,它会获得正确的语义。

    p = C.input(4)
    y = C.input(4)
    classification_error(p, y).eval({p:predictions, y:labels})
    array([[ 0.],
           [ 0.],
           [ 1.]], dtype=float32)
    

    我们将努力修复以防止混淆。

    【讨论】:

    • 谢谢!我应该考虑为函数创建输入,但我没有想到,因为文档中的示例没有明确说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2018-12-12
    相关资源
    最近更新 更多