两种softmax loss求取的代码

#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.0 

 loss += -np.sum(y_trueClass * np.log(probs)) / num_train


个人认为第一种较好,计算量小。

猜你喜欢

转载自blog.csdn.net/flashlau/article/details/80466953