tensorflow分类函数

TensorFlow中常见的分类函数主要有sigmoid_cross_entropy_with_logits、softmax、log_softmax、softmax_cross_entropy_with_logits等,它们也主要定义在tensorflow-1.1.0/tensorflow/python/ops的nn.py和nn_ops.py文件中。

tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name=None)
tf.nn.softmax(logits, dim=-1, name=None)
tf.nn.log_softmax(logits, dim=-1, name=None)
tf.nn.softmax_cross_entropy_with_logits(logits, labels, dim=-1, name=None)
tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name=None)

下面我们就逐一讲解。

(1)tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name=None):

def sigmoid_cross_entropy_with_logits(logits, targets, name=None):
# 输入:logits:[batch_size, num_classes],targets:[batch_size, size].logits用最后一
# 层的输入即可
# 最后一层不需要进行sigmoid运算,此函数内部进行了sigmoid操作
# 输出:loss [batch_size, num_classes]

这个函数的输入要格外注意,如果采用此函数作为损失函数,在神经网络的最后一层不需要进行sigmoid运算。

(2)tf.nn.softmax(logits, dim=-1, name=None)计算Softmax激活,也就是softmax = exp(logits) / reduce_sum(exp(logits), dim)。

(3)tf.nn.log_softmax(logits, dim=-1, name=None)计算log softmax激活,也就是logsoftmax = logits - log(reduce_sum(exp(logits), dim))。

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

def softmax_cross_entropy_with_logits(logits, targets, dim=-1, name=None):
# 输入:logits and labels 均为[batch_size, num_classes]
# 输出: loss:[batch_size], 里面保存的是batch中每个样本的交叉熵

(5)tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name=None) :

def sparse_softmax_cross_entropy_with_logits(logits, labels, name=None):
# logits是神经网络最后一层的结果
# 输入:logits: [batch_size, num_classes]  labels: [batch_size],必须在[0, num_classes]
# 输出:loss [batch_size],里面保存是batch中每个样本的交叉熵

猜你喜欢

转载自blog.csdn.net/wang263334857/article/details/89059175