色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

張量類Tensor的實(shí)現(xiàn)

jf_pmFSk4VX ? 來(lái)源:GiantPandaCV ? 2023-01-13 11:51 ? 次閱讀

關(guān)于維度的預(yù)備知識(shí)

Tensor張量中,共有三維數(shù)據(jù)進(jìn)行順序存放,分別是Channels(維度),Rows(行高), Cols(行寬),三維矩陣我們可以看作多個(gè)連續(xù)的二維矩陣組成,最簡(jiǎn)單的方法就是使用嵌套的vector數(shù)組,但是這種方法非常不利于數(shù)據(jù)的訪問(尤其是內(nèi)存不連續(xù)的問題)修改以及查詢,特別是在擴(kuò)容的時(shí)候非常不方便,能滿足使用需求。

因此,綜合考慮靈活性和開發(fā)的難易度,我們會(huì)以Armadillo類中的arma::mat(矩陣 matrix)類和arma::cube作為數(shù)據(jù)管理(三維矩陣)類來(lái)實(shí)現(xiàn)Tensor 我們庫(kù)中類的主體,一個(gè)cube由多個(gè)matrix組成,cube又是Tensor類中的數(shù)據(jù)實(shí)際管理者。

首先我們講講Tensor類和Armadillo中兩個(gè)類的關(guān)系,可以從下方圖看出Tensor類中的數(shù)據(jù)均由arma::cube類進(jìn)行管理擴(kuò)充,我們?cè)O(shè)計(jì)的類以arma::cube為基礎(chǔ)實(shí)現(xiàn)了Tensor類,我們主要是提供了更方便的訪問方式和對(duì)外接口

5b93a7ea-82d5-11ed-bfe3-dac502259ad0.jpg

arma::cube是一個(gè)三維矩陣,分別是通道維度(slices或者channels),行維度(rows)和列維度(cols),請(qǐng)看下圖1, 圖中是兩個(gè)5行3列的矩陣,藍(lán)色的區(qū)域是數(shù)據(jù)的實(shí)際存儲(chǔ)區(qū),灰色和和白色部分僅用作示意,在內(nèi)存中實(shí)際不存在。

5bbbaa06-82d5-11ed-bfe3-dac502259ad0.jpg

一個(gè)cube類由多個(gè)這樣的Matrix組成,圖1中表示的情況是arma::cube(2, 5, 3), 表示當(dāng)前的三維矩陣共有2個(gè)矩陣構(gòu)成,每個(gè)矩陣都是5行3列的。如果放在我們項(xiàng)目中會(huì)以這形式提供 Tensor tensor(2, 5, 3).

下圖2是這種情況下的三維結(jié)構(gòu)圖,可以看出一個(gè)Cube一共有兩個(gè)Matrix,也就是共有兩個(gè)Channel. 一個(gè)Channel放一個(gè)Matrix. Matrix的行寬均為Rows和Cols.

5c0fda2c-82d5-11ed-bfe3-dac502259ad0.jpg

Tensor方法總覽

我們從上面可以知道,我們的Tensor類是對(duì)armdillo庫(kù)中cube類的封裝,cube是多個(gè)Matrix的集合(二維矩陣的集合),關(guān)系圖如上圖1、圖2. 我們?cè)谶@里對(duì)KuiperInfer中Tensor類的方法進(jìn)行一個(gè)總覽,其中我們會(huì)讓大家親自動(dòng)手實(shí)現(xiàn)兩個(gè)方法(加粗的兩個(gè)),只有動(dòng)手起來(lái)才能參與其中。

類名 功能
rows() 返回Tensor的行數(shù)
cols() 返回Tensor的列數(shù)
Fill(float value) 填充Cube中的數(shù)據(jù),以value值填充
「Padding(std::vectorvalues)」 調(diào)整Matrix的維度,讓Rows和Cols變大一點(diǎn):)
at(uint32_t channel, row, col) 返回Cube中第channel維,第row行,第col列的數(shù)據(jù)。
index(uint32_t offset) 以另外一種方法來(lái)返回?cái)?shù)據(jù),返回Cube中第offset個(gè)數(shù)據(jù),比如說(shuō)在row行,col列,c維的一個(gè)數(shù)據(jù),除了可以用tensor.at(c, row, col)方法訪問。我們也可以通過tensor.index(c × Rows × Cols + row × Cols + col)這種方式來(lái)訪問。可以參考圖4, 展平后的Matrix, at接口更適合用來(lái)存放展平后的數(shù)據(jù)。
「Fill(std::vectorvalues)」 另外一個(gè)Fill方法, 我們需要以values中的所有數(shù)據(jù)去填充Tensor中的數(shù)據(jù)管理器cube類,注意values中數(shù)據(jù)的數(shù)量要等于Cube的行數(shù)×列數(shù)×維度
Flatten() 將三維的矩陣展開鋪平為一維的。

5c1b2b16-82d5-11ed-bfe3-dac502259ad0.jpg

Tensor類模板

Tensor共有兩個(gè)類型,一個(gè)類型是Tensor,另一個(gè)類型是Tensor, Tensor 可能會(huì)在后續(xù)的量化課程中進(jìn)行使用,目前還暫時(shí)未實(shí)現(xiàn),所以在之后的文章中我們以Tensor來(lái)指代Tensor.

如何創(chuàng)建一個(gè)Tensor

Tensor tensor(3, 5, 3). 在我們的KuiperInfer項(xiàng)目中,我們可以用一個(gè)非常簡(jiǎn)單的方式來(lái)創(chuàng)建一個(gè)張量實(shí)例,在如上的定義中,我們得到了一個(gè)通道數(shù)量為3,行數(shù)(rows)為5,列數(shù)(cols)為3的tensor變量。

如何訪問Tensor中數(shù)據(jù)(我們要大家實(shí)現(xiàn)的功能)

我們將在這個(gè)項(xiàng)目中為Tensor類定義多種訪問內(nèi)部數(shù)據(jù)的方式。首先要講的是順序訪問方式,在tensor變量中,我們可以使用tensor.at(0, 1, 2)得到tensor變量中第0通道,第1行,第2列中存放的元素。

另外一種,我們可以使用tensor.index(0)這種方法來(lái)得到tensor變量中第0個(gè)數(shù)據(jù) 。我會(huì)在作業(yè)系統(tǒng)中給予大家充分的提示,讓大家準(zhǔn)確無(wú)誤地把代碼寫出來(lái)。從下圖中可以看出,tensor.at(0,1,2)就是訪問圖中對(duì)應(yīng)位置的點(diǎn)。第1個(gè)矩陣(channel = 0)中第2行(row = 1),第3列(col=2)中的數(shù)據(jù)。

5c331d5c-82d5-11ed-bfe3-dac502259ad0.jpg

再談?wù)凾ensor類中數(shù)據(jù)的排布

我們以具體的圖片作為例子,來(lái)講講Tensor中數(shù)據(jù)管理類arma::cube的數(shù)據(jù)排布方式,Tensor類是arma::cube對(duì)外更方便的接口,所以說(shuō)armadillo::cube怎么管理內(nèi)存的,Tensor類就是怎么管理內(nèi)存的,希望大家的能理解到位。

如下圖中的一個(gè)Cube,Cube的維度是2,每個(gè)維度上存放的是一個(gè)Matrix,一個(gè)Matrix中的存儲(chǔ)空間被用來(lái)存放一張圖像(lena) . 一個(gè)框內(nèi)(channel) 是一個(gè)Matrix,Matrix1存放在Cube第1維度(channel 1)上,Matrix2存放在Cube的第2維度上(channel 2). Matrix1和Matrix2的Rows和Cols均代表著圖像的高和寬,在本例中就是512和384.

5c478828-82d5-11ed-bfe3-dac502259ad0.jpg

如果將順序的一組數(shù)據(jù)[0,1,2,3,4,5....128]存放到一個(gè)大小為4×4的Matrix中,那么大家需要注意一個(gè)問題,我們的數(shù)據(jù)管理類Tensor(arma::cube)是列主序的,這一點(diǎn)和Opencv cv::Mat或者python numpy有一些不同。列主序在內(nèi)存中的順序如下表:

5c5e2164-82d5-11ed-bfe3-dac502259ad0.jpg





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60554

原文標(biāo)題:自制深度學(xué)習(xí)推理框架-張量類Tensor的實(shí)現(xiàn)-第二課

文章出處:【微信號(hào):GiantPandaCV,微信公眾號(hào):GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    張量計(jì)算在神經(jīng)網(wǎng)絡(luò)加速器中的實(shí)現(xiàn)形式

    引言 神經(jīng)網(wǎng)絡(luò)中涉及到大量的張量運(yùn)算,比如卷積,矩陣乘法,向量點(diǎn)乘,求和等。神經(jīng)網(wǎng)絡(luò)加速器就是針對(duì)張量運(yùn)算來(lái)設(shè)計(jì)的。一個(gè)神經(jīng)網(wǎng)絡(luò)加速器通常都包含一個(gè)張量計(jì)算陣列,以及數(shù)據(jù)收發(fā)控制,共同來(lái)完成諸如矩陣
    的頭像 發(fā)表于 11-02 13:52 ?2952次閱讀
    <b class='flag-5'>張量</b>計(jì)算在神經(jīng)網(wǎng)絡(luò)加速器中的<b class='flag-5'>實(shí)現(xiàn)</b>形式

    RK3568國(guó)產(chǎn)處理器 + TensorFlow框架的張量創(chuàng)建實(shí)驗(yàn)案例分享

    張量是某種幾何對(duì)象,不會(huì)隨著坐標(biāo)系的改變而改變。 3、張量是向量和余向量(covector)通過張量積(tensor product)組合而成的。 4、
    發(fā)表于 12-03 14:43

    TensorFlow獲取張量形狀的操作tfshape屬性shape及方法

    TensorFlow 獲取張量形狀的操作 tfshape()、屬性shape 及 方法get_shape() 的基本用法及實(shí)例代碼
    發(fā)表于 06-13 15:03

    TensorFlow教程|張量的階、形狀、數(shù)據(jù)類型

    TensorFlow用張量這種數(shù)據(jù)結(jié)構(gòu)來(lái)表示所有的數(shù)據(jù).你可以把一個(gè)張量想象成一個(gè)n維的數(shù)組或列表.一個(gè)張量有一個(gè)靜態(tài)類型和動(dòng)態(tài)類型的維數(shù).張量可以在圖中的節(jié)點(diǎn)之間流通.階在Tenso
    發(fā)表于 07-27 18:30

    什么是Tensor Flow Lite?

    Tensor Flow Lite 是Google I/O 2017大會(huì)上的推出的,是專門針對(duì)移動(dòng)設(shè)備上可運(yùn)行的深度網(wǎng)絡(luò)模型簡(jiǎn)單版。
    發(fā)表于 11-23 12:16

    yolov5訓(xùn)練的tflite模型進(jìn)行對(duì)象檢測(cè)不適用于NNStreamer 2.2.0-r0?

    ,格式=RGB!張量轉(zhuǎn)換器!tensor_filter framework=tensorflow2-lite model=./my_model-int8.tflite accelerator=true
    發(fā)表于 05-17 12:44

    使用OpenVINO運(yùn)行C++ API創(chuàng)建輸入tensor并執(zhí)行推理遇到的問題求解

    使用 OpenVINO? 運(yùn)行時(shí) C++ API 創(chuàng)建輸入 tensor 并執(zhí)行推理: ov::Tensor input_tensor = ov::Tensor(input_type
    發(fā)表于 08-15 08:22

    基于TTr1SVD的張量奇異值分解

    張量是一種數(shù)據(jù)組織形式,它的實(shí)質(zhì)是高維數(shù)組。很多數(shù)據(jù)都可以被組織成張量的形式,可以考慮將人臉圖像組織成張量的形式。人臉識(shí)別過程中最重要的一個(gè)環(huán)節(jié)是特征提取,后續(xù)的匹配識(shí)別過程是建立在它的基礎(chǔ)上
    發(fā)表于 01-16 14:48 ?1次下載

    NVIDIA Volta GPU中內(nèi)置的Tensor Core GPU架構(gòu)是NVIDIA深度學(xué)習(xí)平臺(tái)的巨大進(jìn)步

    Tensor Core所運(yùn)行的張量應(yīng)位于存儲(chǔ)器的channel-interleaved型數(shù)據(jù)布局(數(shù)量-高度-寬度-通道數(shù),通常稱為NHWC),以實(shí)現(xiàn)最佳性能。訓(xùn)練框架預(yù)期的內(nèi)存布局是通道主序的數(shù)據(jù)
    的頭像 發(fā)表于 05-21 17:35 ?9237次閱讀
    NVIDIA Volta GPU中內(nèi)置的<b class='flag-5'>Tensor</b> Core GPU架構(gòu)是NVIDIA深度學(xué)習(xí)平臺(tái)的巨大進(jìn)步

    Vitis AI - 如何利用張量提升內(nèi)存使用效率達(dá)到內(nèi)存優(yōu)化效果

    張量tensor) 的神奇之處在于多個(gè)張量可以引用同一存儲(chǔ)空間(即包含給定類型的數(shù)字的連續(xù)內(nèi)存區(qū)塊)。此行為由 torch.storage 進(jìn)行管理。 每個(gè)張量都包含 .sto
    的頭像 發(fā)表于 09-29 10:35 ?1979次閱讀

    五個(gè)簡(jiǎn)單步驟掌握TensorFlow中的Tensor

    在這篇文章中,我們將深入研究Tensorflow Tensor實(shí)現(xiàn)細(xì)節(jié)。我們將在以下五個(gè)簡(jiǎn)單步驟中介紹與Tensorflow的Tensor中相關(guān)的所有主題:第一步:張量的定義→什么是
    的頭像 發(fā)表于 12-24 14:35 ?959次閱讀

    基于張量的車輛交通數(shù)據(jù)缺失估計(jì)方法

    ( IntegrateBayesian Tensor Decomposition,IBTD)。該算法在數(shù)據(jù)模型構(gòu)建階段,利用隨機(jī)采樣原理,將缺失數(shù)據(jù)隨機(jī)抽取生成數(shù)據(jù)子集,并用優(yōu)化后的貝葉斯張量分解算法進(jìn)行插補(bǔ)。引入集成思想,將多個(gè)插補(bǔ)后的誤差結(jié)果進(jìn)行分析排序,考慮
    發(fā)表于 06-17 15:39 ?5次下載

    什么是張量處理單元(TPU)

    該項(xiàng)目的目的是創(chuàng)建一個(gè)與谷歌的張量處理單元具有相似架構(gòu)的機(jī)器學(xué)習(xí)協(xié)處理器。該實(shí)現(xiàn)的資源可定制,可以以不同的尺寸使用以適應(yīng)每種類型的 FPGA。這允許在嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中部署該協(xié)處理器
    的頭像 發(fā)表于 04-27 09:27 ?4588次閱讀

    量子探針實(shí)現(xiàn)磁場(chǎng)和應(yīng)力張量的原位測(cè)量

    研究人員還在80 GPa高壓下實(shí)現(xiàn)了金剛石NV中心自旋量子態(tài)相干調(diào)控,并用該微區(qū)量子探針實(shí)現(xiàn)了磁場(chǎng)和應(yīng)力張量的原位測(cè)量。這些結(jié)果為進(jìn)一步提升NV量子傳感工作壓強(qiáng)指明了方向,包括制備更均勻和更好的靜水壓條件,以及提升NV熒光收集效
    的頭像 發(fā)表于 10-20 09:59 ?1133次閱讀

    PyTorch的簡(jiǎn)單實(shí)現(xiàn)

    PyTorch 的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)是張量,即多維數(shù)組。其功能與 NumPy 的 ndarray 對(duì)象類似,如下我們可以使用 torch.Tensor() 創(chuàng)建張量。如果你需要一個(gè)兼容 NumPy 的表征,或者你想從現(xiàn)有的 NumPy
    的頭像 發(fā)表于 01-11 16:29 ?1241次閱讀
    PyTorch的簡(jiǎn)單<b class='flag-5'>實(shí)現(xiàn)</b>
    主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合| 国产人妻精品午夜福利免费不卡 | 免费观看国产视频| 狠狠狠的在啪线香蕉| 国产亚洲精品在线视频| 国产精品爽爽久久久久久无码| 床上色APP下载免费版 | 久久久精品久久久久久| 精品少妇爆AV无码专区| 精品夜夜澡人妻无码AV蜜桃| 幻女FREE性俄罗斯学生| 含羞草免费完整视频在线观看| 国产亚洲精品久久久久久线投注| 国产探花在线精品一区二区| 国产亚洲精品精华液| 国产综合无码一区二区色蜜蜜 | 欧美怡红院视频一区二区三区| 捏揉舔水插按摩师| 年轻老师毛茸茸自由性| 飘雪在线观看免费高清完整版韩国 | 国产午夜精品一区二区理论影院| 国产成人在线播放| 国产精品久久人妻无码网站一区L| 国产二区自拍| 国产免费久久爱久久啪| 国产亚洲福利精品一区| 护士日本ⅹxxx丰满hd| 久久99AV无色码人妻蜜| 久久久久久88色偷偷| 芒果视频看片在线观看| 暖暖视频免费观看高清完整版| 欧美午夜a级精美理论片| 日本黄色www| 无码爽死成人777在线观看网站| 小sao货ji巴cao死你视频| 亚洲精品拍拍央视网出文| 伊人网伊人网| ca88亚洲城娱乐| 国产精品久久久久久52AVAV| 黄子佼81岁父亲现状曝光| 某上海少妇3P黑人完整版BD|