tf.nn.softmax参数详解以及作用

tf.nn.softmax参数详解以及作用

参考地址:https://zhuanlan.zhihu.com/p/93054123

tf.nn.softmax(logits,axis=None,name=None,dim=None)

  • logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64
  • axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度
  • name:操作的名称(可选)
  • dim:axis的已弃用的别名

输入: 全连接层(往往是模型的最后一层)的值
输出: 归一化的值,含义是属于该位置的概率;
通过Softmax回归,将logistic的预测二分类的概率的问题推广到了n分类的概率的问题。

softmax的输出向量是概率,该样本属于各个类的概率。输出的向量的每个值的大小范围为0到1。
当一个样本经过softmax层并输出一个向量,会取这个向量中值最大的那个数的index作为这个样本的预测标签

返回: 一个Tensor,与logits具有相同的类型和shape,softmax函数的输出不改变维度的大小
用途: 如果做单分类问题,那么输出的值就取top1(最大,argmax);如果做多(N)分类问题,那么输出的值就取topN

softmax的数学计算公式

softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), axis)

计算tf.exp(x)

e为自然底数,值为2.7182818284…
tf.exp(x) = e x

tf.reduce_sum(tensor,axis) 是求和函数
  • tensor: 要减少的张量
  • axis: 要减小的尺寸.
    默认值为None,则缩小所有尺寸.
    为0,按行求和
    为1,按列求和
  • keep_dims:如果为true,则保留长度为1的缩小尺寸.
x = tf.constant([[1, 1, 1], [1, 1, 1]])
sess = tf.InteractiveSession()

print(sess.run(tf.reduce_sum(x))) # 6 默认值为None,则缩小所有尺寸.
print(sess.run(tf.reduce_sum(x,0))) # [2,2,2] 为0,按行求和
print(sess.run(tf.reduce_sum(x,0))) # [3,3] 为0,按列求和

'''
axis=0是按照行来求和,即把所有的行都加起来,也就是[1+1,1+1,1+1]-->[2,2,2]
axis=1是按照列来求和,即把所有的列都加起来,也就是[1+1+1][1+1+1]-->[3,3]
'''
使用tf.nn.softmax
array = tf.constant([4.0,1.0,5.0], dtype=tf.float32)
sess = tf.InteractiveSession()
print(sess.run(tf.nn.softmax(array))) #[0.26538792 0.01321289 0.7213992 ]

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值