import numpy as np
labels = np.array([[1,1,1,0],
[1,1,1,0],
[1,1,1,0],
[1,1,1,0]], dtype=np.uint8)
predictions = np.array([[1,0,0,0],
[1,1,0,0],
[1,1,1,0],
[0,1,1,1]], dtype=np.uint8)
n_batches = len(labels)
04 建立评价指标
为了简单起见,这里采用的评估指标是准确度(accuracy):
如果我们想计算整个数据集上的accuracy,可以这样计算:
n_items = labels.size
accuracy = (labels == predictions).sum() / n_items
print("Accuracy :", accuracy)
[OUTPUT]
Accuracy : 0.6875
这种方法的问题在于它不能扩展到大型数据集,这些数据集太大而无法一次性加载到内存。为了使其可扩展,我们希望使评估指标能够逐步更新,每次更新一个batch中预测值和标签。为此,我们需要跟踪两个值:
正确预测的例子总和
目前所有例子的总数
在Python中,我们创建两个全局变量:
# Initialize running variables
N_CORRECT = 0
N_ITEMS_SEEN = 0
每次新来一个batch,我们将这个batch中的预测情况更新到这两个变量中:
# Update running variables
N_CORRECT += (batch_labels == batch_predictions).sum()
N_ITEMS_SEEN += batch_labels.size
而且,我们可以实时地计算每个点处的accuracy:
# Calculate accuracy on updated values
acc = float(N_CORRECT) / N_ITEMS_SEEN
合并前面的功能,我们创建如下的代码:
# Create running variables
N_CORRECT = 0
N_ITEMS_SEEN = 0
def reset_running_variables():
""" Resets the previous v