如何在CNN中找到模型的准确性?

时间:2017-10-17 23:43:46

标签: python neural-network keras

我想找到定制CNN模型的准确性。我有权重(w),损失值(l)和测试数据(x_test)与类变量(y_test)。权重无法调整,它们应保持不变。它就像一个单层前馈神经网络。

我想完成此功能,以提供与Keras相同的精确度。

编辑1:二进制类分类问题。

Terminate

如何像在Keras或任何其他API中那样完成准确性声明?

2 个答案:

答案 0 :(得分:1)

如果你想要类似于keras的内容,你只关心y_testy_predy_testy_true):

def acc(y_true, y_pred):
    return np.equal(np.argmax(y_true, axis=-1), np.argmax(y_pred, axis=-1)).mean()

这是我的POC:

import numpy as np

# y_test onehot encoded
y_test = np.array([[1, 0, 0],[0, 1, 0],[0, 0, 1], [0, 1, 0], [1, 0, 0]])
y_pred = np.random.random((5,3))

print("y_true: " + str(np.argmax(y_test, axis=-1)))
print("y_pred: " + str(np.argmax(y_pred, axis=-1)))

def acc(y_true, y_pred):
    return np.equal(np.argmax(y_true, axis=-1), np.argmax(y_pred, axis=-1)).mean()

print("accuracy: " + str(acc(y_test, y_pred)))

结果:

y_real: [0 1 2 1 0]
y_pred: [1 1 0 1 0]
accuracy: 0.6

更新1:由于它是用于二进制分类,因此函数将是:

def acc(y_true, y_pred):
    return np.equal(y_true, np.round(y_pred)).mean()

POC:

import numpy as np

y_test = np.array([1, 0, 0, 1, 0])
y_pred = np.random.random((5))

print("y_true: " + str(y_test))
print("y_pred: " + str(np.round(y_pred).astype(int)))

def acc(y_true, y_pred):
    return np.equal(y_true, np.round(y_pred)).mean()

print("accuracy: " + str(acc(y_test, y_pred)))

答案 1 :(得分:0)

如果我没记错,您可以将B&W.Wactual的值传递给predicted库中可用的scoring函数。

查看Scoring - mlxtend了解更多说明。