日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

张量Tensor@最强分析

發布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 张量Tensor@最强分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果你的張量理解程度還停留在只能想象出三維的張量維度的話,相信這篇文章一定能讓你徹底理解各種維度的張量!


文章目錄

  • 如果你的張量理解程度還停留在只能想象出三維的張量維度的話,相信這篇文章一定能讓你徹底理解各種維度的張量!
  • 理解第一步(一維張量):
  • 理解第二步(二維張量):
  • 理解第三步(三維張量):
  • 理解第四步(高維張量):
  • 當然,我們還可以通過簡圖通俗理解以及想象高維張量長啥樣!:


理解第一步(一維張量):

對張量最初級的理解可以舉例為python中的列表,這里的list就可以理解為一維張量:

list=[1,2,3,4,5]

我們也可以通過常見的張量生成函數torch.rand()來生成一位張量(torch.rand的作用通俗來說就是產生均勻分布的數據!

torch.rand()里面有幾個數字那么就是生成幾維張量!

例如這里生成一維張量:

import torch# 生成一個有四個隨機張量元素的一維張量 x = torch.rand(4)print(x)

生成結果:

tensor([0.0235, 0.5347, 0.4886, 0.4133])

OK,到這你就完成了理解張量的第一步了!
矩陣就是理解張量的第一步


理解第二步(二維張量):

理解張量的第二步也不難,其實就可以理解為我們大學課程中學習的矩陣!
例如這個兩行兩列的矩陣B就可以看作一個二維張量:

同樣我們用torch.rand()生成一個二維張量,再次強調,torch.rand()括號里面輸入幾個數那就是生成幾維張量,這里我們輸入兩個數:

import torch# 生成二維張量 x = torch.rand(2, 4)print(x)

生成了個兩行四列的張量(矩陣):

tensor([[0.0988, 0.4283, 0.6238, 0.5235],[0.1831, 0.0804, 0.4846, 0.5573]])

二維張量常見于灰度圖像當中,灰度圖像即為一個二維張量數據!


理解第三步(三維張量):

理解三維張量也相對容易,二維張量可以看作一個平面,而三維張量就可以看作很多個二維張量平面兩兩平行擺放。
例如我們常見的RGB圖像就可以理解為3個二維灰度圖像并排擺放。

同樣,我們用torch.rand()生成三維張量:

import torch# rand括號里輸入幾個數就是生成幾維張量 # 這里的(234)分別為(channel, height, width) x = torch.rand(2, 3, 4)print(x)

生成結果:

tensor([[[0.7657, 0.6422, 0.3424, 0.3820],[0.0910, 0.5460, 0.1790, 0.5021],[0.7869, 0.1970, 0.8491, 0.9219]],[[0.8981, 0.2356, 0.3094, 0.0314],[0.9902, 0.8836, 0.8478, 0.1059],[0.5204, 0.3140, 0.9305, 0.3709]]])

這里通俗理解為,生成了2個平行擺放的3行4列的二維張量!


理解第四步(高維張量):

相信大多數人的想象力就到上面為止了,我們的張量其實不但有3維,還有33維、333維、333333維。。。

在理解高維張量之前,我先想到了俄羅斯套娃,哈哈……

其實高維張量就可以理解為俄羅斯套娃,單位為“套”
一“套”張量 = 一維張量
n’‘套’'張量 = n維張量

張量有專屬的高維張量單位,那就是batch,相信跑過深度的同學都知道,訓練網絡之前都得調batchsize大小,其實本質上就是調的張量維度,維度高了計算機也會吃不消,畢竟理論上可以將batchsize調成9999999哈哈。

同樣我們可以通過torch.rand()生成高維張量:

import torch''' 這里的rand()括號里面的參數從第四維開始其實就是不斷加入一個新的參數---batch! 例如我這里4維張量就是(batch, channel, heigth, width) 那如果是6維張量那就是(batch, batch, batch, channel, heigth, width) 不斷地在前面加batch就好啦! ''' x = torch.rand(2, 3, 4, 5)print(x)

生成結果:

tensor([[[[0.3507, 0.2650, 0.4203, 0.6650, 0.9264],[0.0372, 0.7468, 0.4858, 0.1521, 0.0588],[0.7570, 0.2222, 0.6243, 0.1668, 0.2480],[0.0759, 0.3870, 0.8078, 0.0019, 0.7025]],[[0.9906, 0.7294, 0.1512, 0.2580, 0.9308],[0.3207, 0.9315, 0.5995, 0.4642, 0.6465],[0.8916, 0.8987, 0.0457, 0.9936, 0.0683],[0.0167, 0.5090, 0.6432, 0.7025, 0.9202]],[[0.6409, 0.1199, 0.6162, 0.7897, 0.9580],[0.4882, 0.8031, 0.3614, 0.3455, 0.1440],[0.2205, 0.9850, 0.4896, 0.3791, 0.6387],[0.5410, 0.6443, 0.6870, 0.5172, 0.9992]]],[[[0.6450, 0.5450, 0.5042, 0.3609, 0.7601],[0.8083, 0.9958, 0.6853, 0.5153, 0.3479],[0.2294, 0.9824, 0.3542, 0.6019, 0.7602],[0.8068, 0.0328, 0.9990, 0.5347, 0.9353]],[[0.2620, 0.0935, 0.3777, 0.4553, 0.3261],[0.9518, 0.4248, 0.2831, 0.0669, 0.4071],[0.3266, 0.9508, 0.4695, 0.6182, 0.0342],[0.1116, 0.3320, 0.7976, 0.3882, 0.1616]],[[0.2976, 0.7540, 0.2132, 0.0451, 0.0510],[0.1716, 0.3817, 0.2071, 0.5533, 0.4266],[0.1548, 0.7449, 0.8091, 0.3496, 0.6603],[0.6606, 0.5282, 0.8939, 0.8655, 0.2171]]]])

用我們俄羅斯套娃的話術將就是:我們生成了個2套3層4行5列的四維張量!

當然我們還可以生成5套6套7套8套9層10行11列的張量哈哈,即:torch.rand(5,6,7,8,9,10,11)


當然,我們還可以通過簡圖通俗理解以及想象高維張量長啥樣!:

例如:
三維張量為一套(1個batch),那么四維張量很簡單就是把三維張量排成一列擺放:

好啦,三套張量排排放!這就是我們的四維張量啦!

五維張量長啥樣呢?我們來看看:

這就是五維張量啦,也就是3套四維張量并排放!

其實在這我們就可以看到張量的升維其實也是在降維!
怎么理解呢,其實不知道大家有沒發現上面2張圖的過程很像我們第三步的那張圖,我們的三維張量在上圖五維張量中就可以看作為當初最基礎的單位:那個小方格。

同樣如果是六維張量就是把五維張量這個“平面”平行疊多層,即是升維。

換言之,batch不斷地充當最初的那個小方格了,只不過是大套包小套,小套變小格!

總結

以上是生活随笔為你收集整理的张量Tensor@最强分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。