如何使用CNTK classification_error()?
How to use CNTK classification_error()?
我试图理解 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 试图变得用户友好,但最终对类型感到困惑 :-) 您可以分辨出来,因为分类错误甚至不正确。
如果您添加一点输入信息,它的语义就会正确。
p = C.input(4)
y = C.input(4)
classification_error(p, y).eval({p:predictions, y:labels})
array([[ 0.],
[ 0.],
[ 1.]], dtype=float32)
我们将着手进行修复以防止混淆。
我试图理解 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 试图变得用户友好,但最终对类型感到困惑 :-) 您可以分辨出来,因为分类错误甚至不正确。
如果您添加一点输入信息,它的语义就会正确。
p = C.input(4)
y = C.input(4)
classification_error(p, y).eval({p:predictions, y:labels})
array([[ 0.],
[ 0.],
[ 1.]], dtype=float32)
我们将着手进行修复以防止混淆。