最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch中Softmax與LogSigmoid的對比分析

 更新時間:2021年06月05日 15:03:13   作者:奧特曼丶畢健旗  
這篇文章主要介紹了Pytorch中Softmax與LogSigmoid的對比分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Pytorch中Softmax與LogSigmoid的對比

torch.nn.Softmax

作用:

1、將Softmax函數(shù)應用于輸入的n維Tensor,重新改變它們的規(guī)格,使n維輸出張量的元素位于[0,1]范圍內(nèi),并求和為1。

2、返回的Tensor與原Tensor大小相同,值在[0,1]之間。

3、不建議將其與NLLLoss一起使用,可以使用LogSoftmax代替之。

4、Softmax的公式:

在這里插入圖片描述

參數(shù):

維度,待使用softmax計算的維度。

例子:

# 隨機初始化一個tensor
a = torch.randn(2, 3)
print(a) # 輸出tensor
# 初始化一個Softmax計算對象,在輸入tensor的第2個維度上進行此操作
m = nn.Softmax(dim=1)
# 將a進行softmax操作
output = m(a)
print(output) # 輸出tensor

tensor([[ 0.5283,  0.3922, -0.0484],
        [-1.6257, -0.4775,  0.5645]])
tensor([[0.4108, 0.3585, 0.2307],
        [0.0764, 0.2408, 0.6828]])

可以看見的是,無論輸入的tensor中的值為正或為負,輸出的tensor中的值均為正值,且加和為1。

當m的參數(shù)dim=1時,輸出的tensor將原tensor按照行進行softmax操作;當m的參數(shù)為dim=0時,輸出的tensor將原tensor按照列進行softmax操作。

深度學習拓展:

一般來說,Softmax函數(shù)會用于分類問題上。例如,在VGG等深度神經(jīng)網(wǎng)絡中,圖像經(jīng)過一系列卷積、池化操作后,我們可以得到它的特征向量,為了進一步判斷此圖像中的物體屬于哪個類別,我們會將該特征向量變?yōu)椋侯悇e數(shù) * 各類別得分 的形式,為了將得分轉換為概率值,我們會將該向量再經(jīng)過一層Softmax處理。

torch.nn.LogSigmoid

公式:

在這里插入圖片描述

函數(shù)圖:

可以見得,函數(shù)值在[0, -]之間,輸入值越大函數(shù)值距離0越近,在一定程度上解決了梯度消失問題。

例子:

a = [[ 0.5283,  0.3922, -0.0484],
    [-1.6257, -0.4775,  0.5645]]
a = torch.tensor(a)
lg = nn.LogSigmoid()
lgoutput = lg(a)
print(lgoutput)

tensor([[-0.4635, -0.5162, -0.7176],
        [-1.8053, -0.9601, -0.4502]])

二者比較:

import torch
import torch.nn as nn
# 設置a為 2*3  的tensor
a = [[ 0.5283,  0.3922, -0.0484],
    [-1.6257, -0.4775,  0.5645]]
a = torch.tensor(a)
print(a)
print('a.mean:', a.mean(1, True)) # 輸出a的 行平均值

m = nn.Softmax(dim=1) # 定義Softmax函數(shù),dim=1表示為按行計算
lg = nn.LogSigmoid() # 定義LogSigmoid函數(shù)

output = m(a)
print(output)
# 輸出a經(jīng)過Softmax的結果的行平均值
print('output.mean:', output.mean(1, True)) 

lg_output = lg(a)
print(lg_output)
# 輸出a經(jīng)過LogSigmoid的結果的行平均值
print('lgouput.mean:', lg_output.mean(1, True)) 

# 結果:
tensor([[ 0.5283,  0.3922, -0.0484],
        [-1.6257, -0.4775,  0.5645]])
a.mean: tensor(-0.1111)

tensor([[0.4108, 0.3585, 0.2307],
        [0.0764, 0.2408, 0.6828]])
output.mean: tensor([[0.3333], [0.3333]]) # 經(jīng)過Softmax的結果的行平均值

tensor([[-0.4635, -0.5162, -0.7176],
        [-1.8053, -0.9601, -0.4502]])
lgouput.mean: tensor([[-0.5658], [-1.0719]]) # 經(jīng)過LogSigmoid的結果的行平均值

由上可知,繼續(xù)考慮分類問題,相同的數(shù)據(jù),經(jīng)過Softmax和LogSigmoid處理后,若取最大概率值對應類別作為分類結果,那么:

1、第一行數(shù)據(jù)經(jīng)過Softmax后,會選擇第一個類別;經(jīng)過LogSigmoid后,會選擇第一個。

2、第二行數(shù)據(jù)經(jīng)過Softmax后,會選擇第三個類別;經(jīng)過LogSigmoid后,會選擇第三個。

3、一般來說,二者在一定程度上區(qū)別不是很大,由于sigmoid函數(shù)存在梯度消失問題,所以被使用的場景不多。

4、但是在多分類問題上,可以嘗試選擇Sigmoid函數(shù)來作為分類函數(shù),因為Softmax在處理多分類問題上,會更容易出現(xiàn)各項得分十分相近的情況。瓶頸值可以根據(jù)實際情況定。

nn.Softmax()與nn.LogSoftmax()

nn.Softmax()計算出來的值,其和為1,也就是輸出的是概率分布,具體公式如下:

這保證輸出值都大于0,在0,1范圍內(nèi)。

而nn.LogSoftmax()公式如下:

由于softmax輸出都是0-1之間的,因此logsofmax輸出的是小于0的數(shù),

softmax求導:

logsofmax求導:

例子:

import torch.nn as nn
import torch
import numpy as np
layer1=nn.Softmax()
layer2=nn.LogSoftmax()
 
input=np.asarray([2,3])
input=Variable(torch.Tensor(input))
 
output1=layer1(input)
output2=layer2(input)
print('output1:',output1)
print('output2:',output2)

輸出:

output1: Variable containing:
0.2689
0.7311
[torch.FloatTensor of size 2]

output2: Variable containing:
-1.3133
-0.3133
[torch.FloatTensor of size 2]

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • tornado+celery的簡單使用詳解

    tornado+celery的簡單使用詳解

    今天小編就為大家分享一篇tornado+celery的簡單使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬蟲實例扒取2345天氣預報

    Python爬蟲實例扒取2345天氣預報

    本篇文章給大家詳細分析了通過Python爬蟲如何采集到2345的天氣預報信息,有興趣的朋友參考學習下吧。
    2018-03-03
  • Python numpy  數(shù)組的向量化運算操作方法

    Python numpy  數(shù)組的向量化運算操作方法

    這篇文章主要介紹了Python numpy數(shù)組的向量化運算操作方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Pycharm配置anaconda環(huán)境圖文教程

    Pycharm配置anaconda環(huán)境圖文教程

    這篇文章主要介紹了Pycharm配置anaconda環(huán)境圖文教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python如何求解兩數(shù)的最大公約數(shù)

    python如何求解兩數(shù)的最大公約數(shù)

    這篇文章主要為大家詳細介紹了python如何求解兩數(shù)的最大公約數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python面向?qū)ο笾瓷?自省機制實例分析

    Python面向?qū)ο笾瓷?自省機制實例分析

    這篇文章主要介紹了Python面向?qū)ο笾瓷?自省機制,結合實例形式分析了Python面向?qū)ο蟪绦蛟O計中的反射/自省機制概念、原理及相關屬性操作技巧,需要的朋友可以參考下
    2018-08-08
  • 能讓你輕松的實現(xiàn)自然語言處理的5個Python庫

    能讓你輕松的實現(xiàn)自然語言處理的5個Python庫

    今天教大家如何你輕松的實現(xiàn)自然語言預處理,僅僅需要5個python庫,文中介紹的非常詳細,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python中GIL的使用詳解

    Python中GIL的使用詳解

    GIL的全稱為Global Interpreter Lock,全局解釋器鎖。本篇文章詳細的介紹了Python中GIL的使用,有需要了解Python中GIL用法的朋友可參考。希望此文章對各位有所幫助
    2018-10-10
  • python實現(xiàn)銀聯(lián)支付和支付寶支付接入

    python實現(xiàn)銀聯(lián)支付和支付寶支付接入

    這篇文章主要為大家詳細介紹了python實現(xiàn)銀聯(lián)支付和支付寶支付的接入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 玩轉python爬蟲之爬取糗事百科段子

    玩轉python爬蟲之爬取糗事百科段子

    這篇文章主要介紹了python爬蟲爬取糗事百科段子,詳細介紹下,如何來抓取到糗事百科里面的指定內(nèi)容,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論

晴隆县| 安义县| 桐乡市| 宜城市| 长汀县| 准格尔旗| 特克斯县| 永德县| 方城县| 仙桃市| 永泰县| 广安市| 蕉岭县| 教育| 华容县| 武威市| 桐梓县| 阳城县| 安图县| 贞丰县| 宣汉县| 白山市| 浦城县| 迭部县| 濮阳县| 宁陵县| 鸡东县| 闸北区| 嘉义县| 永州市| 新兴县| 策勒县| 美姑县| 景东| 齐齐哈尔市| 秦安县| 天台县| 神木县| 峨眉山市| 酉阳| 厦门市|