我想找到定制CNN模型的准确性。我有权重(w),损失值(l)和测试数据(x_test)与类变量(y_test)。权重无法调整,它们应保持不变。它就像一个单层前馈神经网络。
我想完成此功能,以提供与Keras相同的精确度。
编辑1:二进制类分类问题。
Terminate
如何像在Keras或任何其他API中那样完成准确性声明?
答案 0 :(得分:1)
如果你想要类似于keras的内容,你只关心y_test
和y_pred
(y_test
是y_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.W
和actual
的值传递给predicted
库中可用的scoring
函数。
查看Scoring - mlxtend了解更多说明。