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

Pytorch中torch.nn.Softmax的dim參數(shù)用法說明

 更新時(shí)間:2021年06月07日 08:36:59   作者:樂清sss  
這篇文章主要介紹了Pytorch中torch.nn.Softmax的dim參數(shù)用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Pytorch中torch.nn.Softmax的dim參數(shù)使用含義

涉及到多維tensor時(shí),對(duì)softmax的參數(shù)dim總是很迷,下面用一個(gè)例子說明

import torch.nn as nn
m = nn.Softmax(dim=0)
n = nn.Softmax(dim=1)
k = nn.Softmax(dim=2)
input = torch.randn(2, 2, 3)
print(input)
print(m(input))
print(n(input))
print(k(input))

輸出:

input

tensor([[[ 0.5450, -0.6264, 1.0446],
[ 0.6324, 1.9069, 0.7158]],

[[ 1.0092, 0.2421, -0.8928],
[ 0.0344, 0.9723, 0.4328]]])

dim=0

tensor([[[0.3860, 0.2956, 0.8741],
[0.6452, 0.7180, 0.5703]],

[[0.6140, 0.7044, 0.1259],
[0.3548, 0.2820, 0.4297]]])

dim=0時(shí),在第0維上sum=1,即:

[0][0][0]+[1][0][0]=0.3860+0.6140=1
[0][0][1]+[1][0][1]=0.2956+0.7044=1
… …

dim=1

tensor([[[0.4782, 0.0736, 0.5815],
[0.5218, 0.9264, 0.4185]],

[[0.7261, 0.3251, 0.2099],
[0.2739, 0.6749, 0.7901]]])

dim=1時(shí),在第1維上sum=1,即:

[0][0][0]+[0][1][0]=0.4782+0.5218=1
[0][0][1]+[0][1][1]=0.0736+0.9264=1
… …

dim=2

tensor([[[0.3381, 0.1048, 0.5572],
[0.1766, 0.6315, 0.1919]],

[[0.6197, 0.2878, 0.0925],
[0.1983, 0.5065, 0.2953]]])

dim=2時(shí),在第2維上sum=1,即:

[0][0][0]+[0][0][1]+[0][0][2]=0.3381+0.1048+0.5572=1.0001(四舍五入問題)
[0][1][0]+[0][1][1]+[0][1][2]=0.1766+0.6315+0.1919=1
… …

用圖表示223的張量如下:

在這里插入圖片描述

多分類問題torch.nn.Softmax的使用

為什么談?wù)撨@個(gè)問題呢?是因?yàn)槲以诠ぷ鞯倪^程中遇到了語義分割預(yù)測(cè)輸出特征圖個(gè)數(shù)為16,也就是所謂的16分類問題。

因?yàn)槊總€(gè)通道的像素的值的大小代表了像素屬于該通道的類的大小,為了在一張圖上用不同的顏色顯示出來,我不得不學(xué)習(xí)了torch.nn.Softmax的使用。

首先看一個(gè)簡(jiǎn)答的例子,倘若輸出為(3, 4, 4),也就是3張4x4的特征圖。

import torch
img = torch.rand((3,4,4))
print(img)

輸出為:

tensor([[[0.0413, 0.8728, 0.8926, 0.0693],
[0.4072, 0.0302, 0.9248, 0.6676],
[0.4699, 0.9197, 0.3333, 0.4809],
[0.3877, 0.7673, 0.6132, 0.5203]],

[[0.4940, 0.7996, 0.5513, 0.8016],
[0.1157, 0.8323, 0.9944, 0.2127],
[0.3055, 0.4343, 0.8123, 0.3184],
[0.8246, 0.6731, 0.3229, 0.1730]],

[[0.0661, 0.1905, 0.4490, 0.7484],
[0.4013, 0.1468, 0.2145, 0.8838],
[0.0083, 0.5029, 0.0141, 0.8998],
[0.8673, 0.2308, 0.8808, 0.0532]]])

我們可以看到共三張?zhí)卣鲌D,每張?zhí)卣鲌D上對(duì)應(yīng)的值越大,說明屬于該特征圖對(duì)應(yīng)類的概率越大。

import torch.nn as nn
sogtmax = nn.Softmax(dim=0)
img = sogtmax(img)
print(img)

輸出為:

tensor([[[0.2780, 0.4107, 0.4251, 0.1979],
[0.3648, 0.2297, 0.3901, 0.3477],
[0.4035, 0.4396, 0.2993, 0.2967],
[0.2402, 0.4008, 0.3273, 0.4285]],

[[0.4371, 0.3817, 0.3022, 0.4117],
[0.2726, 0.5122, 0.4182, 0.2206],
[0.3423, 0.2706, 0.4832, 0.2522],
[0.3718, 0.3648, 0.2449, 0.3028]],

[[0.2849, 0.2076, 0.2728, 0.3904],
[0.3627, 0.2581, 0.1917, 0.4317],
[0.2543, 0.2898, 0.2175, 0.4511],
[0.3880, 0.2344, 0.4278, 0.2686]]])

可以看到,上面的代碼對(duì)每張?zhí)卣鲌D對(duì)應(yīng)位置的像素值進(jìn)行Softmax函數(shù)處理, 圖中標(biāo)紅位置加和=1,同理,標(biāo)藍(lán)位置加和=1。

我們看到Softmax函數(shù)會(huì)對(duì)原特征圖每個(gè)像素的值在對(duì)應(yīng)維度(這里dim=0,也就是第一維)上進(jìn)行計(jì)算,將其處理到0~1之間,并且大小固定不變。

print(torch.max(img,0))

輸出為:

torch.return_types.max(
values=tensor([[0.4371, 0.4107, 0.4251, 0.4117],
[0.3648, 0.5122, 0.4182, 0.4317],
[0.4035, 0.4396, 0.4832, 0.4511],
[0.3880, 0.4008, 0.4278, 0.4285]]),
indices=tensor([[1, 0, 0, 1],
[0, 1, 1, 2],
[0, 0, 1, 2],
[2, 0, 2, 0]]))

可以看到這里3x4x4變成了1x4x4,而且對(duì)應(yīng)位置上的值為像素對(duì)應(yīng)每個(gè)通道上的最大值,并且indices是對(duì)應(yīng)的分類。

清楚理解了上面的流程,那么我們就容易處理了。

看具體案例,這里輸出output的大小為:16x416x416.

output = torch.tensor(output)
sm = nn.Softmax(dim=0)
output = sm(output)
mask = torch.max(output,0).indices.numpy()
 
# 因?yàn)橐D(zhuǎn)化為RGB彩色圖,所以增加一維
rgb_img = np.zeros((output.shape[1], output.shape[2], 3))
for i in range(len(mask)):
    for j in range(len(mask[0])):
        if mask[i][j] == 0:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 255
            rgb_img[i][j][2] = 255
        if mask[i][j] == 1:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 180
            rgb_img[i][j][2] = 0
        if mask[i][j] == 2:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 180
            rgb_img[i][j][2] = 180
        if mask[i][j] == 3:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 180
            rgb_img[i][j][2] = 255
        if mask[i][j] == 4:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 255
            rgb_img[i][j][2] = 180
        if mask[i][j] == 5:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 255
            rgb_img[i][j][2] = 0
        if mask[i][j] == 6:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 180
        if mask[i][j] == 7:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 255
        if mask[i][j] == 8:
            rgb_img[i][j][0] = 255
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 0
        if mask[i][j] == 9:
            rgb_img[i][j][0] = 180
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 0
        if mask[i][j] == 10:
            rgb_img[i][j][0] = 180
            rgb_img[i][j][1] = 255
            rgb_img[i][j][2] = 255
        if mask[i][j] == 11:
            rgb_img[i][j][0] = 180
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 180
        if mask[i][j] == 12:
            rgb_img[i][j][0] = 180
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 255
        if mask[i][j] == 13:
            rgb_img[i][j][0] = 180
            rgb_img[i][j][1] = 255
            rgb_img[i][j][2] = 180
        if mask[i][j] == 14:
            rgb_img[i][j][0] = 0
            rgb_img[i][j][1] = 180
            rgb_img[i][j][2] = 255
        if mask[i][j] == 15:
            rgb_img[i][j][0] = 0
            rgb_img[i][j][1] = 0
            rgb_img[i][j][2] = 0
 
cv2.imwrite('output.jpg', rgb_img)

最后保存得到的圖為:

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

相關(guān)文章

  • 對(duì)Python中l(wèi)ist的倒序索引和切片實(shí)例講解

    對(duì)Python中l(wèi)ist的倒序索引和切片實(shí)例講解

    今天小編就為大家分享一篇對(duì)Python中l(wèi)ist的倒序索引和切片實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python抓取網(wǎng)頁圖片示例(python爬蟲)

    python抓取網(wǎng)頁圖片示例(python爬蟲)

    這篇文章主要介紹了python抓取網(wǎng)頁圖片示例(python爬蟲),需要的朋友可以參考下
    2014-04-04
  • python讀取注冊(cè)表中值的方法

    python讀取注冊(cè)表中值的方法

    在Python的標(biāo)準(zhǔn)庫(kù)中,_winreg.pyd可以操作Windows的注冊(cè)表,另外第三方的win32庫(kù)封裝了大量的Windows API,使用起來也很方便。不過這里介紹的是使用_winreg操作注冊(cè)表,畢竟是Python自帶的標(biāo)準(zhǔn)庫(kù),無需安裝第三方庫(kù)
    2013-04-04
  • pytest解讀fixtures中yield與addfinalizer區(qū)別

    pytest解讀fixtures中yield與addfinalizer區(qū)別

    這篇文章主要為大家介紹了pytest官方解讀fixtures中yield與addfinalizer區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python繪圖之turtle庫(kù)的基礎(chǔ)語法使用

    Python繪圖之turtle庫(kù)的基礎(chǔ)語法使用

    這篇文章主要給大家介紹了關(guān)于Python繪圖之turtle庫(kù)的基礎(chǔ)語法使用的相關(guān)資料, Turtle庫(kù)是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),再繪圖的時(shí)候經(jīng)常需要用到的一個(gè)庫(kù)需要的朋友可以參考下
    2021-06-06
  • Python中分?jǐn)?shù)的相關(guān)使用教程

    Python中分?jǐn)?shù)的相關(guān)使用教程

    這篇文章主要介紹了Python中分?jǐn)?shù)的相關(guān)使用教程,主要涉及分?jǐn)?shù)的計(jì)算、約分等簡(jiǎn)單操作,是Python學(xué)習(xí)過程當(dāng)中的基礎(chǔ),需要的朋友可以參考下
    2015-03-03
  • 快速搭建python爬蟲管理平臺(tái)

    快速搭建python爬蟲管理平臺(tái)

    如今大多數(shù)企業(yè)都離不開爬蟲,它是獲取數(shù)據(jù)的一種有效方式。但是對(duì)爬蟲有著規(guī)模量級(jí)要求的企業(yè)或個(gè)人需要同時(shí)處理不同類別的爬蟲,這會(huì)憑空增添很多附加的管理成本。因此一個(gè)成熟的爬蟲管理流程應(yīng)該包含一個(gè)管理系統(tǒng),能夠有效處理上述問題。
    2021-05-05
  • Python解析器Cpython的GIL解釋器鎖工作機(jī)制

    Python解析器Cpython的GIL解釋器鎖工作機(jī)制

    這篇文章主要為大家介紹了Cpython的GIL解釋器鎖工作機(jī)制掌握示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Pygame Draw繪圖函數(shù)的具體使用

    Pygame Draw繪圖函數(shù)的具體使用

    Pygame 中提供了一個(gè)draw模塊用來繪制一些簡(jiǎn)單的圖形狀,比如矩形、多邊形、圓形、直線、弧線等,本文就詳細(xì)的介紹一下如何使用
    2021-11-11
  • python爬蟲今日熱榜數(shù)據(jù)到txt文件的源碼

    python爬蟲今日熱榜數(shù)據(jù)到txt文件的源碼

    這篇文章主要介紹了python爬蟲今日熱榜數(shù)據(jù)到txt文件的源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

达日县| 鹤山市| 五峰| 周口市| 怀远县| 牟定县| 江安县| 罗江县| 惠水县| 宁陵县| 垫江县| 厦门市| 安仁县| 蓬莱市| 乌鲁木齐县| 罗平县| 新乡县| 黄石市| 股票| 南投县| 上饶县| 兴海县| 兴和县| 巢湖市| 拜城县| 五指山市| 临猗县| 汉沽区| 镇沅| 汪清县| 桐城市| 陆良县| 确山县| 定日县| 乃东县| 蕉岭县| 壶关县| 临邑县| 金秀| 镇平县| 博客|