【发布时间】:2018-09-22 04:32:26
【问题描述】:
我用 Python 学习 AI 并遇到这种情况:我创建了一个深度学习模型,在他的输入层中有 10 个神经元。在输出层我有 3 个神经元。我将数据分成 80% 用于学习,20% 用于测试。
经过训练的模型已准备好进行测试。
直到现在,我总是遇到输出层中只有一个神经元的情况。所以,我以这种方式测试了准确性:
classifier = Sequential()
# ...
classifier.add(Dense(units = 3, kernel_initializer = 'uniform', activation = 'sigmoid'))
# ...
y_pred = classifier.predict(np.array(X_test))
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
当输出层在每个预测中只有一个值时效果很好。
就我而言,我在每个预测中有 3 个值。
y_pred = array ([[3.142904686503911194e-11, 1.000000000000000000e+00, 1.729809626091548085e-16],
[7.398544450698540942e-12, 1.000000000000000000e+00, 1.776427415878292515e-22],
[4.224535246066807304e-07, 1.000000000000000000e+00 7.929732391553923065e-12]])
我想将它与我的预期值进行比较,其中:
y_test = [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
所以,我可以选择手动完成这项工作:
- 在预测值的最大值处置入 1。其他值变为 0。
- 逐行比较两个向量。
看来一定有更好的办法?
【问题讨论】:
-
看看
numpy.allclose(array1, array2)。它按元素比较两个数组,如果每对元素在一定的公差范围内相等,则返回 True
标签: python tensorflow scikit-learn