#1. probs[range(N), y] 从probs中取出y所指向的正确类的概率值,然后对各元素求log值,得到correct_logprobs,是一个[N,]数组:
correct_logprobs = -np.log(probs[range(N), y])
data_loss = np.sum(correct_logprobs) / N
#2.建立 y_trueClass矩阵,将正确分类的位置上赋值为1,其余为0。对probs中的元素取log之后,将y_trueClass作为mask,来从probs中剔除非正确分类的概率值,求和,取平均。
y_trueClass = np.zeros_like(probs)
y_trueClass[range(num_train), y] = 1.0loss += -np.sum(y_trueClass * np.log(probs)) / num_train
个人认为第一种较好,计算量小。
本文介绍了两种计算交叉熵损失的方法,并对比了它们的计算效率。第一种方法直接从概率分布中提取正确类别的概率并计算其对数,第二种方法则通过构建指示矩阵并用作掩码来实现相似的目标。
492

被折叠的 条评论
为什么被折叠?



