softmax用于多分类过程中最后一层,将多个神经元的输出,映射到(0, 1)区间内,可以看成概率来理解,从而来进行多分类!
softmax函数如下: 更形象的如下图表示: softmax 直白来说就是讲原来输出是 3, 1, -3 通过 softmax 函数一作用,就映射成为(0, 1)的值,而这些值的累和为1,那么我们就可以将其理解成概率,在最后选取输出节点的时候,我们可以选取概率最大的节点,作为我们的预测目标!
Python代码实现:
# _*_coding:utf-8_*_
import tensorflow as tf
import numpy as np
import math
# softmax函数,或称归一化指数函数
def softmax(x, axis=1):
# 为了避免求 exp(x) 出现溢出的情况,一般需要减去最大值
# 计算每行的最大值
row_max = x.max(axis=axis)
# 每行元素都需要减去对应的最大值,否则求exp(x)会溢出,导致INF情况
row_max = row_max.reshpae(-1, 1)
x = x - row_max
x_exp = np.exp(x)
# 如果是列向量,则axis=0
x_sum = np.sum(x_exp, axis=1, keepdims=True)
s = x_exp / x_sum
r