Tensorflow的loss函数计算容易出错的地方

1 问题的提出

按照tensorflow官方教程搭建好的一个model中的loss函数应该是采用如下的计算方法:

cross_entropy = -tf.reduce_sum(y_*tf.log(y))

其中,这个公式就是按照标准的交叉熵函数进行定义的,比较简陋,去掉了常数项系数,但是没改变总体的性质,所以算是基本交叉熵函数。

但是呢,tensorflow系统中提供了计算交叉熵函数的接口。

以下这两个函数:

①tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, name=None)

②tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)


2 两个函数的区别

以上两个函数,①是计算logits和label之间的交叉熵,并且直接给出softmax回归结果,其中要求label输入的格式是:类别,0,1,2,3,4,5,6,7,8,9(10个类的话)
②同样是计算logits和label之间的交叉熵,并给出softmax预测,但是与①的区别就是输入的label的格式必须是:
one-hot类型的变量,[0,0,0,1],[0,0,1,0],[0,1,0,0],[1,0,0,0](4个类别的话)


猜你喜欢

转载自blog.csdn.net/zbzb1000/article/details/67634891
今日推荐