tf.nn.softmax参数详解以及作用
tf.nn.softmax参数详解以及作用tf.nn.softmax(logits,axis=None,name=None,dim=None)logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度name:操作的名称(可选)dim:axis的已弃用的别名返回:一个Tensor,与l
·
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 ]
更多推荐
已为社区贡献2条内容
所有评论(0)