我正试图理解cntk.metrics.classification_error()的正确用法,并使用它来验证一批预测的真实性。
下面的玩具示例(基于Python文档):
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)如果我想要处理一个大批,是否有一种方法可以得到一个向量,而不是一个看起来效率低下的方阵?
在调用axis时,我尝试使用classification_error()关键字,但是无论设置axis=0还是axis=1,都会得到一个空的结果。
发布于 2017-05-02 01:57:00
这是因为CNTK试图对用户友好,并最终混淆了类型:-)您可以判断,因为分类错误甚至是不正确的。
如果添加一点输入信息,它就会得到正确的语义。
p = C.input(4)
y = C.input(4)
classification_error(p, y).eval({p:predictions, y:labels})
array([[ 0.],
[ 0.],
[ 1.]], dtype=float32)我们将致力于解决这个问题,以防止混乱。
https://stackoverflow.com/questions/43724485
复制相似问题