import
解释下给定的数据,x假设是fc layer的输出,可以看到这里x是(3,3)的,也就是batch_size=3,n_classes=3。但是label给出了三个数,取值是0,1,因此这里必须要将label先变成one_hot的形式才能在cross_entropy函数中正确相乘。
值得注意的点:
- softmax是有exp函数的,exp对很大的数会出现inf,因此这里要先针对每行数字减去每行的最大值。这样即可保证softmax的numerical stability。
- cross_entropy中log(predictions)得到(3,3)的矩阵,target必须也是(3,3)才能对应正确相乘,因此target要事先变成onehot
- log函数在输入=0时会出现错误,因此log(predictions)前要对predictions进行clip,将其中出现的0修改为一个很小的数字(难免predictions中有0)