您当前的位置: 首页 >  深度学习
  • 0浏览

    0关注

    2393博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

DL之softmax:深度学习中常用的函数之softmax——基于numpy定义优化softmax函数代码实现

一个处女座的程序猿 发布时间:2020-03-20 14:19:38 ,浏览量:0

DL之softmax:深度学习中常用的函数之softmax——基于numpy定义优化softmax函数代码实现

目录

深度学习中常用的函数之softmax——基于numpy定义优化softmax函数代码实现

设计思路

输出结果

代码实现

深度学习中常用的函数之softmax——基于numpy定义优化softmax函数代码实现 设计思路

# 1、定义softmax()函数        # T1、初级定义softmax()函数:但是较大的数值难以计算        # T2、优化后的softmax()函数:解决因数值超大而导致的溢出现象               # 输出总和为1是softmax函数的一个重要性质。正因为有这个性质,才可以把softmax 函数的输出解释为“概率”。               # [ 0.01821127 0.24519181 0.73659691]    #有74%的概率是第2个类别,有25%的概率是第1个类别,有1%的概率是第0个类别 

输出结果

 DNN完整结构输出结果: [0.01821127 0.24519181 0.73659691] 1.0

代码实现
# DL之softmax:深度学习中常用的函数之softmax——基于numpy定义优化softmax函数代码实现

import numpy as np

 
# 1、定义softmax()函数
# T1、初级定义softmax()函数:但是较大的数值难以计算
def softmax01(a):
    exp_a = np.exp(a)          #指数函数
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a      #指数函数的和
    return y
 
# 因数值超大,没被正确计算
arr_X = np.array([1010, 1000, 990])
y01 = softmax01(arr_X)
print('DNN完整结构输出结果:',y01,np.sum(y01)) 
# 分析原因
res = np.exp(arr_X) / np.sum(np.exp(arr_X))    #softmax函数的运算
print(res)


# T2、优化后的softmax()函数:解决因数值超大而导致的溢出现象
def softmax(a):
    c = np.max(a)
    exp_a = np.exp(a - c)  # 溢出对策
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    return y

arr_X = np.array([0.3, 2.9, 4.0])
y = softmax(arr_X)
print('DNN完整结构输出结果:',y,np.sum(y))  
# 输出总和为1是softmax函数的一个重要性质。正因为有这个性质,才可以把softmax 函数的输出解释为“概率”。
# [ 0.01821127 0.24519181 0.73659691]    #有74%的概率是第2个类别,有25%的概率是第1个类别,有1%的概率是第0个类别 
 

关注
打赏
1664196048
查看更多评论
立即登录/注册

微信扫码登录

0.1307s