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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

張量類Tensor的實現

jf_pmFSk4VX ? 來源:GiantPandaCV ? 2023-01-13 11:51 ? 次閱讀

關于維度的預備知識

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

因此,綜合考慮靈活性和開發的難易度,我們會以Armadillo類中的arma::mat(矩陣 matrix)類和arma::cube作為數據管理(三維矩陣)類來實現Tensor 我們庫中類的主體,一個cube由多個matrix組成,cube又是Tensor類中的數據實際管理者。

首先我們講講Tensor類和Armadillo中兩個類的關系,可以從下方圖看出Tensor類中的數據均由arma::cube類進行管理擴充,我們設計的類以arma::cube為基礎實現了Tensor類,我們主要是提供了更方便的訪問方式和對外接口

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

arma::cube是一個三維矩陣,分別是通道維度(slices或者channels),行維度(rows)和列維度(cols),請看下圖1, 圖中是兩個5行3列的矩陣,藍色的區域是數據的實際存儲區,灰色和和白色部分僅用作示意,在內存中實際不存在。

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

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

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

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

Tensor方法總覽

我們從上面可以知道,我們的Tensor類是對armdillo庫中cube類的封裝,cube是多個Matrix的集合(二維矩陣的集合),關系圖如上圖1、圖2. 我們在這里對KuiperInfer中Tensor類的方法進行一個總覽,其中我們會讓大家親自動手實現兩個方法(加粗的兩個),只有動手起來才能參與其中。

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

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

Tensor類模板

Tensor共有兩個類型,一個類型是Tensor,另一個類型是Tensor, Tensor 可能會在后續的量化課程中進行使用,目前還暫時未實現,所以在之后的文章中我們以Tensor來指代Tensor.

如何創建一個Tensor

Tensor tensor(3, 5, 3). 在我們的KuiperInfer項目中,我們可以用一個非常簡單的方式來創建一個張量實例,在如上的定義中,我們得到了一個通道數量為3,行數(rows)為5,列數(cols)為3的tensor變量。

如何訪問Tensor中數據(我們要大家實現的功能)

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

另外一種,我們可以使用tensor.index(0)這種方法來得到tensor變量中第0個數據 。我會在作業系統中給予大家充分的提示,讓大家準確無誤地把代碼寫出來。從下圖中可以看出,tensor.at(0,1,2)就是訪問圖中對應位置的點。第1個矩陣(channel = 0)中第2行(row = 1),第3列(col=2)中的數據。

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

再談談Tensor類中數據的排布

我們以具體的圖片作為例子,來講講Tensor中數據管理類arma::cube的數據排布方式,Tensor類是arma::cube對外更方便的接口,所以說armadillo::cube怎么管理內存的,Tensor類就是怎么管理內存的,希望大家的能理解到位。

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

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

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

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





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60528

原文標題:自制深度學習推理框架-張量類Tensor的實現-第二課

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    張量計算在神經網絡加速器中的實現形式

    引言 神經網絡中涉及到大量的張量運算,比如卷積,矩陣乘法,向量點乘,求和等。神經網絡加速器就是針對張量運算來設計的。一個神經網絡加速器通常都包含一個張量計算陣列,以及數據收發控制,共同來完成諸如矩陣
    的頭像 發表于 11-02 13:52 ?2920次閱讀
    <b class='flag-5'>張量</b>計算在神經網絡加速器中的<b class='flag-5'>實現</b>形式

    RK3568國產處理器 + TensorFlow框架的張量創建實驗案例分享

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

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

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

    TensorFlow教程|張量的階、形狀、數據類型

    TensorFlow用張量這種數據結構來表示所有的數據.你可以把一個張量想象成一個n維的數組或列表.一個張量有一個靜態類型和動態類型的維數.張量可以在圖中的節點之間流通.階在Tenso
    發表于 07-27 18:30

    什么是Tensor Flow Lite?

    Tensor Flow Lite 是Google I/O 2017大會上的推出的,是專門針對移動設備上可運行的深度網絡模型簡單版。
    發表于 11-23 12:16

    yolov5訓練的tflite模型進行對象檢測不適用于NNStreamer 2.2.0-r0?

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

    使用OpenVINO運行C++ API創建輸入tensor并執行推理遇到的問題求解

    使用 OpenVINO? 運行時 C++ API 創建輸入 tensor 并執行推理: ov::Tensor input_tensor = ov::Tensor(input_type
    發表于 08-15 08:22

    基于TTr1SVD的張量奇異值分解

    張量是一種數據組織形式,它的實質是高維數組。很多數據都可以被組織成張量的形式,可以考慮將人臉圖像組織成張量的形式。人臉識別過程中最重要的一個環節是特征提取,后續的匹配識別過程是建立在它的基礎上
    發表于 01-16 14:48 ?1次下載

    NVIDIA Volta GPU中內置的Tensor Core GPU架構是NVIDIA深度學習平臺的巨大進步

    Tensor Core所運行的張量應位于存儲器的channel-interleaved型數據布局(數量-高度-寬度-通道數,通常稱為NHWC),以實現最佳性能。訓練框架預期的內存布局是通道主序的數據
    的頭像 發表于 05-21 17:35 ?9210次閱讀
    NVIDIA Volta GPU中內置的<b class='flag-5'>Tensor</b> Core GPU架構是NVIDIA深度學習平臺的巨大進步

    Vitis AI - 如何利用張量提升內存使用效率達到內存優化效果

    張量tensor) 的神奇之處在于多個張量可以引用同一存儲空間(即包含給定類型的數字的連續內存區塊)。此行為由 torch.storage 進行管理。 每個張量都包含 .sto
    的頭像 發表于 09-29 10:35 ?1959次閱讀

    五個簡單步驟掌握TensorFlow中的Tensor

    在這篇文章中,我們將深入研究Tensorflow Tensor實現細節。我們將在以下五個簡單步驟中介紹與Tensorflow的Tensor中相關的所有主題:第一步:張量的定義→什么是
    的頭像 發表于 12-24 14:35 ?929次閱讀

    基于張量的車輛交通數據缺失估計方法

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

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

    該項目的目的是創建一個與谷歌的張量處理單元具有相似架構的機器學習協處理器。該實現的資源可定制,可以以不同的尺寸使用以適應每種類型的 FPGA。這允許在嵌入式系統和物聯網設備中部署該協處理器
    的頭像 發表于 04-27 09:27 ?4499次閱讀

    量子探針實現磁場和應力張量的原位測量

    研究人員還在80 GPa高壓下實現了金剛石NV中心自旋量子態相干調控,并用該微區量子探針實現了磁場和應力張量的原位測量。這些結果為進一步提升NV量子傳感工作壓強指明了方向,包括制備更均勻和更好的靜水壓條件,以及提升NV熒光收集效
    的頭像 發表于 10-20 09:59 ?1104次閱讀

    PyTorch的簡單實現

    PyTorch 的關鍵數據結構是張量,即多維數組。其功能與 NumPy 的 ndarray 對象類似,如下我們可以使用 torch.Tensor() 創建張量。如果你需要一個兼容 NumPy 的表征,或者你想從現有的 NumPy
    的頭像 發表于 01-11 16:29 ?1218次閱讀
    PyTorch的簡單<b class='flag-5'>實現</b>
    主站蜘蛛池模板: 精品久久日日躁夜夜躁AV| 色综合色综合久久综合频道| 亚洲AV综合99一二三四区| 91精品视频网站| 狠狠色狠狠色综合日日2019| 日韩国产精品欧美一区二区| 0855午夜福利伦理电影| 好男人资源免费观看1| 色多多污污在线观看网站| 97精品视频在线观看| 久久www成人看片| 亚洲AV久久无码精品九号| 朝鲜女人性猛交| 你的欲梦裸身在线播放| 伊在香蕉国产在线视频| 国内视频在线精品一区| 双性诱受灌满哭求饶BL| 被爽到叫呻呤视频免费视频| 麻豆免费高清完整版| 亚洲熟妇AV乱码在线观看| 国产午夜精品久久久久九九| 三级成人电彭| 憋尿调教绝望之岛| 欧美gv明星| 69夫妻交友网| 凌馨baby| 中文字幕日本一区| 久久久久久久久免费视频| 亚洲欧美日韩另类精品一区二区三区 | 337p啪啪人体大胆| 久久草香蕉频线观| 亚洲精品中文字幕制| 国产偷国产偷亚州清高| 无人区尖叫之夜美女姐姐视频| 岛国大片在线观看免费版| 人人射人人插| 草莓AV福利网站导航| 强行撕开衣服捏胸黄文| xart欧美一区在线播放| 欧美乱妇日本无乱码特黄大片| 99久久精品一区二区三区|