softmax

tf.nn.softmax_cross_entropy_with_logits详解

拟墨画扇 提交于 2019-12-03 13:07:12
衡量的是独立互斥离散分类任务的误差 该网络会计算logits和labels的softmax cross entropy loss,独立互斥离散分类任务是因为,在这些任务中类与类之间是独立而且互斥的,比如VOC classification、Imagenet、CIFAR-10甚至MNIST,这些都是多分类任务,但是一张图就对应着一个类,class在图片中是独立的,并且一张图中只能有一个class,所以是独立且互斥事件。 直观表现为label形式为[0,0,…,1,0,…0],1000个元素中有且只有一个元素是1,其余都是0。 在卷积神经网络中的全连接层一般需要计算loss最小代价值(误差),也就是下面方法: loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=outputs, logits=prediction) (即将废弃) loss=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=labels, logits=logits)) (等同上面) labels :类维度的每个向量应该保持有效的概率分布,比如10分类[0,0,0,0,0,0,0,1,0,0] logits :未缩放的日志概率(全连接层的输出)

TensorFlow学习笔记(3)——softmax_cross_entropy_with_logits函数详解

北城余情 提交于 2019-12-03 13:05:50
softmax_cross_entropy_with_logits函数原型: tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred, name=None) 函数功能:计算最后一层是softmax层的cross entropy,把softmax计算与cross entropy计算放到一起了,用一个函数来实现,用来提高程序的运行速度。 参数name:该操作的name 参数labels:shape是[batch_size, num_classes],神经网络期望输出。 参数logits:shape是[batch_size, num_classes] ,神经网络最后一层的输入。 具体的执行流程大概分为两步: 第一步是对网络最后一层的输出做一个softmax,这一步通常是求取输出属于某一类的概率,对于单样本而言,输出就是一个 num_classes 大小的向量([Y1,Y2,Y3,...]其中Y1,Y2,Y3,...分别代表了是属于该类的概率) 第二步是 softmax的输出向量[Y1,Y2,Y3,...]和样本的实际标签做一个交叉熵, 指实际标签中第i个的值; 指 softmax的输出向量[Y1,Y2,Y3...] 中,第i个元素的值。 总之,tensorflow之所以把softmax和cross

softmax_cross_entropy

╄→尐↘猪︶ㄣ 提交于 2019-12-03 13:05:34
tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name=None) 计算logits 和 labels 之间的稀疏softmax 交叉熵 度量在离散分类任务中的错误率,这些类之间是相互排斥的(每个输入只能对应唯一确定的一个类)。举例来说,每个CIFAR-10 图片只能被标记为唯一的一个标签:一张图片可能是一只狗或一辆卡车,而不能两者都是。 注意:针对这个操作,给定某一个标签的概率被认为是排外的。也就是说,软分类是不允许的,并且labels 向量必须提供一个单一的指定的真实类别的索引,为logits 的每一行(每个 minibatch 的输入)。对于软 softmax 分类来说,对每一个输入有一个概率分布,参照 softmax_cross_entropy_with_logits. 警告:这个操作期望无尺度化的logits, 因为它在内部高效地对logits 进行 softmax 。请不要用softmax 的输出调用这个操作,否则会产生错误结果。 logits 必须具有shape [batch_size, num_classes] 并且 dtype (float32 or float64) labels 必须具有shape [batch_size],并且 dtype int64 参数: logits:

[tensorflow] tf.nn.sparse_softmax_cross_entropy_with_logits的使用方法及常见报错

会有一股神秘感。 提交于 2019-12-03 13:04:54
函数说明 在计算交叉熵之前,通常要用到softmax层来计算结果的概率分布。因为softmax层并不会改变最终的分类结果(排序),所以,tensorflow将softmax层与交叉熵函数进行封装,形成一个函数方便计算: tf.nn.softmax_cross_entropy_with_logits(logits= , labels=) 。 为了加速计算过程,针对只有一个正确答案(例如MNIST识别)的分类问题,tensorflow提供了 tf.nn.sparse_softmax_cross_entropy_with_logits(logits= , labels=) 。 两个函数的区别 两个函数虽然功能类似,但是其参数labels有明显区别。 tf.nn.softmax_cross_entropy_with_logits() 中的logits和labels的shape都是[b atch_size, num_classes], 而tf.nn.sparse_softmax_cross_entropy_with_logits() 中的labels 是 稀疏表示的,是 [0,num_classes)中的一个数值,代表正确分类结果。即 sparse_softmax_cross_entropy_with_logits 直接用标签计算交叉熵,而 softmax_cross_entropy

Tensorflow函数:tf.nn.softmax_cross_entropy_with_logits 讲解

你离开我真会死。 提交于 2019-12-03 13:04:41
首先把Tensorflow英文API搬过来: tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None) Computes softmax cross entropy between logits and labels . Measures the probability error in discrete classification tasks in which the classes are mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is labeled with one and only one label: an image can be a dog or a truck, but not both. NOTE: While the classes are mutually exclusive, their probabilities need not be. All that is required is that each row of labels is a valid

【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法

岁酱吖の 提交于 2019-12-03 13:04:04
在计算loss的时候,最常见的一句话就是tf.nn.softmax_cross_entropy_with_logits,那么它到底是怎么做的呢? 首先明确一点,loss是代价值,也就是我们要最小化的值 tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None) 除去name参数用以指定该操作的name,与方法有关的一共两个参数 : 第一个参数logits :就是神经网络最后一层的输出,如果有batch的话,它的大小就是[batchsize,num_classes],单样本的话,大小就是 num_classes 第二个参数labels :实际的标签,大小同上 具体的执行流程大概分为两步: 第一步是先对网络最后一层的输出做一个softmax,这一步通常是求取输出属于某一类的概率,对于单样本而言,输出就是一个 num_classes 大小的向量([Y1,Y2,Y3...]其中Y1,Y2,Y3...分别代表了是属于该类的概率) softmax的公式是: 至于为什么是用的这个公式?这里不介绍了,涉及到比较多的理论证明 第二步是 softmax的输出向量[Y1,Y2,Y3...]和样本的实际标签做一个交叉熵,公式如下: 其中 指代实际的标签中第i个的值(用mnist数据举例,如果是3,那么标签是[0,0,0,1,0,0

tf.nn.sparse_softmax_cross_entropy_with_logits

老子叫甜甜 提交于 2019-12-03 13:03:23
tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name=None) 计算logits 和 labels 之间的稀疏softmax 交叉熵 度量在离散分类任务中的错误率,这些类之间是相互排斥的(每个输入只能对应唯一确定的一个类)。举例来说,每个CIFAR-10 图片只能被标记为唯一的一个标签:一张图片可能是一只狗或一辆卡车,而不能两者都是。 注意:针对这个操作,给定某一个标签的概率被认为是排外的。也就是说,软分类是不允许的,并且labels 向量必须提供一个单一的指定的真实类别的索引,为logits 的每一行(每个 minibatch 的输入)。对于软 softmax 分类来说,对每一个输入有一个概率分布,参照 softmax_cross_entropy_with_logits. 警告:这个操作期望无尺度化的logits, 因为它在内部高效地对logits 进行 softmax 。请不要用softmax 的输出调用这个操作,否则会产生错误结果。 logits 必须具有shape [batch_size, num_classes] 并且 dtype (float32 or float64) labels 必须具有shape [batch_size],并且 dtype int64 参数: logits:

tensorflow学习笔记(五):tf.losses.softmax_cross_entropy()和tf.losses.sparse_softmax_cross_entropy()

北战南征 提交于 2019-12-03 13:03:13
tf.losses.softmax_cross_entropy(): softmax cross-entropy loss (用tf.nn.softmax_cross_entropy_with_logits 实现) tf.losses.sparse_softmax_cross_entropy(): 稀疏softmax Cross-entropy loss (用 tf.nn.sparse_softmax_cross_entropy_with_logits 实现) 注意1,使用这两种Losses函数,网络的最后都不需要加上softmax函数。 注意2,在sparse_softmax_cross_entropy(),输入的label为 tf.argmax(Y, axis=1) 来源: CSDN 作者: cgd132 链接: https://blog.csdn.net/cgd132/article/details/82315903

tensorflow之损失函数:sparse_softmax_cross_entropy_with_logits 与 softmax_cross_entropy_with_logits的区别

非 Y 不嫁゛ 提交于 2019-12-03 13:02:55
原函数: 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 ) 1.sparse_softmax_cross_entropy_with_logits中 lables接受直接的数字标签 如[1], [2], [3], [4] (类型只能为int32,int64) labels=tf.constant([0,1,2,3],dtype=tf.int32) logits=tf.Variable(tf.random_normal([4,4])) loss=tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels,logits=logits) sess=tf.Session() init=tf.global_variables_initializer() sess.run(init) print(sess.run(loss)) 2.而softmax_cross_entropy

[TensorFlow] argmax, softmax_cross_entropy_with_logits, sparse_softmax_cross_entropy_with_logits函数详解

夙愿已清 提交于 2019-12-03 12:59:05
写在前面 tensorFlow版本:1.8.0 一、tf.argmax() tf.argmax( input, axis= None , name= None , dimension= None , output_type=tf.int64 ) 1、argmax()的作用是返回数组某一行或某一列最大数值所在的下标 2、input:输入矩阵 3、 axis:指定按行操作还是按列操作 此函数在使用时最重要的两个参数是input和axis,axis可选的取值是0和1。axis=0表示对矩阵按列进行argmax操作,axis=1表示对矩阵按行进行argmax操作。 举例如下: import tensorflow as tf data = tf.constant( [[1, 5, 4], [2, 3, 6]] , dtype=tf.float32) # 定义一个 2 * 3 的矩阵 argmax_axis_0 = tf.argmax(data, 0 ) # 按列 argmax_axis_1 = tf.argmax(data, 1 ) # 按行 with tf.Session() as sess: value_axis_0 = sess.run(argmax_axis_0) value_axis_1 = sess.run(argmax_axis_1) print ( "value_axis_0