亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python softmax實(shí)現(xiàn)及數(shù)值穩(wěn)定性詳解

 更新時(shí)間:2023年07月25日 17:05:24   作者:xiao蝸牛  
這篇文章主要為大家介紹了Python softmax實(shí)現(xiàn)及數(shù)值穩(wěn)定性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Softmax

softmax函數(shù)將任意n維的實(shí)值向量轉(zhuǎn)換為取值范圍在(0,1)之間的n維實(shí)值向量,并且總和為1。

例如:向量softmax([1.0, 2.0, 3.0]) ------> [0.09003057, 0.24472847, 0.66524096]

性質(zhì):

  • 因?yàn)閟oftmax是單調(diào)遞增函數(shù),因此不改變?cè)紨?shù)據(jù)的大小順序。
  • 將原始輸入映射到(0,1)區(qū)間,并且總和為1,常用于表征概率。
  • softmax(x) = softmax(x+c), 這個(gè)性質(zhì)用于保證數(shù)值的穩(wěn)定性。

softmax的實(shí)現(xiàn)及數(shù)值穩(wěn)定性

一個(gè)最簡(jiǎn)單的計(jì)算給定向量的softmax的實(shí)現(xiàn)如下:

import numpy as np
def softmax(x):
"""Compute the softmax of vector x."""
    exp_x = np.exp(x)
    softmax_x = exp_x / np.sum(exp_x)
    return softmax_x

讓我們來(lái)測(cè)試一下上面的代碼:

softmax([1, 2, 3])
array([0.09003057, 0.24472847, 0.66524096])

但是,當(dāng)我們嘗試輸入一個(gè)比較大的數(shù)值向量時(shí),就會(huì)出錯(cuò):

softmax([1000, 2000, 3000])
array([nan, nan, nan])

這是由numpy中的浮點(diǎn)型數(shù)值范圍限制所導(dǎo)致的。當(dāng)輸入一個(gè)較大的數(shù)值時(shí),sofmax函數(shù)將會(huì)超出限制,導(dǎo)致出錯(cuò)。

為了解決這一問(wèn)題,這時(shí)我們就能用到sofmax的第三個(gè)性質(zhì),即:softmax(x) = softmax(x+c),
一般在實(shí)際運(yùn)用中,通常設(shè)定c = - max(x)。

接下來(lái),我們重新定義softmax函數(shù):

import numpy as np
def softmax(x):
"""Compute the softmax in a numerically stable way."""
    x = x - np.max(x)
    exp_x = np.exp(x)
    softmax_x = exp_x / np.sum(exp_x)
    return softmax_x

然后再次測(cè)試一下:

softmax([1000, 2000, 3000])
array([ 0.,  0.,  1.])

Done!

以上都是基于向量上的softmax實(shí)現(xiàn),下面提供了基于向量以及矩陣的softmax實(shí)現(xiàn),代碼如下:

import numpy as np
def softmax(x):
    """
    Compute the softmax function for each row of the input x.
    Arguments:
    x -- A N dimensional vector or M x N dimensional numpy matrix.
    Return:
    x -- You are allowed to modify x in-place
    """
    orig_shape = x.shape
    if len(x.shape) > 1:
        # Matrix
        exp_minmax = lambda x: np.exp(x - np.max(x))
        denom = lambda x: 1.0 / np.sum(x)
        x = np.apply_along_axis(exp_minmax,1,x)
        denominator = np.apply_along_axis(denom,1,x) 
        if len(denominator.shape) == 1:
            denominator = denominator.reshape((denominator.shape[0],1))
        x = x * denominator
    else:
        # Vector
        x_max = np.max(x)
        x = x - x_max
        numerator = np.exp(x)
        denominator =  1.0 / np.sum(numerator)
        x = numerator.dot(denominator)
    assert x.shape == orig_shape
    return x

以上就是Python softmax實(shí)現(xiàn)及數(shù)值穩(wěn)定性詳解的詳細(xì)內(nèi)容,更多關(guān)于Python softmax數(shù)值穩(wěn)定性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python創(chuàng)建與遍歷二叉樹(shù)的方法實(shí)例

    python創(chuàng)建與遍歷二叉樹(shù)的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于python創(chuàng)建與遍歷二叉樹(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于python實(shí)現(xiàn)坦克大戰(zhàn)游戲

    基于python實(shí)現(xiàn)坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了基于python實(shí)現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 淺談keras保存模型中的save()和save_weights()區(qū)別

    淺談keras保存模型中的save()和save_weights()區(qū)別

    這篇文章主要介紹了淺談keras保存模型中的save()和save_weights()區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python使用Kafka處理數(shù)據(jù)的方法詳解

    Python使用Kafka處理數(shù)據(jù)的方法詳解

    Kafka是一個(gè)分布式的流數(shù)據(jù)平臺(tái),它可以快速地處理大量的實(shí)時(shí)數(shù)據(jù)。在Python中使用Kafka可以幫助我們更好地處理大量的數(shù)據(jù),本文就來(lái)和大家詳細(xì)講講具體使用方法吧
    2023-04-04
  • Keras搭建分類(lèi)網(wǎng)絡(luò)平臺(tái)VGG16?MobileNet?ResNet50

    Keras搭建分類(lèi)網(wǎng)絡(luò)平臺(tái)VGG16?MobileNet?ResNet50

    這篇文章主要為大家介紹了Keras搭建分類(lèi)網(wǎng)絡(luò)平臺(tái)VGG16?MobileNet?ResNet50,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python基于codecs模塊實(shí)現(xiàn)文件讀寫(xiě)案例解析

    Python基于codecs模塊實(shí)現(xiàn)文件讀寫(xiě)案例解析

    這篇文章主要介紹了Python基于codecs實(shí)現(xiàn)文件讀寫(xiě)案例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • ansible作為python模塊庫(kù)使用的方法實(shí)例

    ansible作為python模塊庫(kù)使用的方法實(shí)例

    ansible是一個(gè)python package,是個(gè)完全的unpack and play軟件,對(duì)客戶端唯一的要求是有ssh有python,并且裝了python-simplejson包,部署上簡(jiǎn)單到發(fā)指。下面這篇文章就給大家主要介紹了ansible作為python模塊庫(kù)使用的方法實(shí)例,需要的朋友可以參考借鑒。
    2017-01-01
  • Python實(shí)現(xiàn)將Excel內(nèi)容插入到Word模版中

    Python實(shí)現(xiàn)將Excel內(nèi)容插入到Word模版中

    前段時(shí)間因?yàn)樾枰幚硪淮蠖羊?yàn)收單,都是一些簡(jiǎn)單的復(fù)制粘貼替換工作,于是就想到用python進(jìn)行處理。本文分享了用python將excel文件單元格內(nèi)容插入到word模版中并保存為新文件的辦法,希望對(duì)大家有所幫助
    2023-03-03
  • pytorch載入預(yù)訓(xùn)練模型后,實(shí)現(xiàn)訓(xùn)練指定層

    pytorch載入預(yù)訓(xùn)練模型后,實(shí)現(xiàn)訓(xùn)練指定層

    今天小編就為大家分享一篇pytorch載入預(yù)訓(xùn)練模型后,實(shí)現(xiàn)訓(xùn)練指定層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 利用python繪制笛卡爾直角坐標(biāo)系

    利用python繪制笛卡爾直角坐標(biāo)系

    這篇文章主要介紹了利用python繪制笛卡爾直角坐標(biāo)系,python繪圖主要用到matplotlib繪圖模塊,利用matplotlib模塊畫(huà)出上面的正弦函,需要的朋友可以參考一下
    2022-03-03

最新評(píng)論