深度学习基础篇:激活函数softmax

softmax

keras.activations.softmax(x, axis=-1)

softmax计算公式:

 

  • 作用

放大数据之间的差距,让数据大的更大,比如[1,1,2]对应的结果为[0.21194156 0.21194156 0.57611688]

  • 参数说明:

  • x:张量 

  • ndim维度为x的维度:

当ndim = 1时:会报错(Cannot apply softmax to a tensor that is 1D.)

当ndim = 2时:直接输出softmax计算公式

当ndim > 2时:每个维度减去最大值后,输出softmax计算公式(据说是防止数据过大,出现异常,但不影响结果,可以公式证明)

  • axis:

当x的维度>2以上时的时候生效asix

理解很困难,建议直接看例子,然后自己在做几个试验一下

当axis = 0时:取一维空间的数据,进行softmax计算

当axis = 1时:取二维空间的数据,进行softmax计算

当axis = 2时:取三维空间的数据,进行softmax计算

上面说的很好记忆,但理解却非常抽象,下面见例子就好理解多了

例子

  • 理解axis=0(最难):

运算一(记住这个输出结果): 

x = np.array([1,3])
print(softmax(x))
# 输出:[0.11920292 0.88079708]

输入[1,3],输出 [0.11920292 0.88079708]

运算二: 

 

 图中将“1”和“3”进行softmax计算,然后输出[0.11920292 0.88079708],与运算一对应

 当axis=0时,相当于将2个(3*3)的矩阵对应位置的数据进行softmax计算

  • 理解axis=1(这个就简单了)

运算三

x = np.array([1,1,2])
print(softmax(x))
# 输出[0.21194156 0.21194156 0.57611688]

当axis=1时,相当于将单个(3*3)的矩阵竖着的位置的数据进行softmax计算

  • 理解axis=2:

与axis=1类似,只不过是将单个矩阵横着进行softmax计算,不举例了

另外:

 下面是用于例子证明的softmax公式代码:

def softmax(x,axis=-1):
    if axis == 1:
        raise ValueError('Cannot apply softmax to a tensor that is 1D. ')
    e = np.exp(x)
    s = np.sum([np.exp(i) for i in x])
    return e/s

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值