TensorFlow基礎之理解張量

2.理解張量

    1. 張量(Tensors)介紹

張量是物理和工程領域的基礎數學結構。但是過去張量很少在計算機科學里使用。它與離散數學和邏輯學有更多的聯系。隨著機器學習的出現,這種狀態開始顯著的改變,成為連續向量的計算基礎。現代機器學習以張量的操作和微積分為基礎。

張量是TensorFlow工作的基本計算單元。假如你用語句 import tensorflow as tf導入tensorflow,它的基本的對象是張量 tensor,是類tf.tensor tf.tensor有兩個特性:

  • 數據類型 (例如, float32)
  • 形狀 (例如, [2,3],意味著張量有2行和3)

張量有靜態的數據類型和動態的維。在評估的時候你不能改變它的數據類型但是在評估前可以動態的改變它的維 (基本上,你聲明張量時可以不用指明維,TensorFlow會從輸入值推斷維)

簡單的來說張量只不過是原始數據類型的集合 (例如,浮點數)形狀為 n-維的數組。這里是一些張量的例子 (以及相關的 Python定義) :

?1 一個標量

?[1,2,3] 一個向量

?[[1,2,3], [4,5,6]] 一個矩陣或兩維數組

一個重要的方面是張量的每一個元素總是有相同的類據類型,而形狀不一定要在聲明時定義。 (后面的實例會更清楚些。)

通常人們討論張量的 rankshape數組的長度稱為tensor的rank。簡單的來說它就是張量維的數目(而標量的 rank 0)Ranking tensors的意思是包含于張量本身的數組的維。張量的形狀表示每一個維的數值。如

Scalar—32:rank 0張量的形狀(shape)為 [ ].

Vector—[3, 4, 5]: rank 1張量的形狀(shape)為[3].

Matrix =1 2 3

4 5 6

7 8 9??? : rank 2 張量的形狀(shape)[3, 3]。

2-1有助于理解張量的不同 ranks是什么。

2-1. ?Ranks 0, 1, 2, 3 Tensors的例子

Rank?????? 數學實體???????????????????????????????????????????????????????????? Python示例

0???????????? 標量 (例如,長度或重量)???????????????? l=30

1???????????? 向量 (例如,物體在二維平面上的速度)???? s=[10.2,12.6]

2???????????? 矩陣????????????????????????????????? m=[[23.2, 44.2], [12.2, 55.6]]

3??????????? 3d矩陣 (有三個維)????????????????? C = [[[1],[2]],[[3],[4]], [[5], [6]]]

可以用a.get_shape()來得到張量a的shape。a.reshape()可以改變張量a的shape。

記住張量(tensor)只是數據的容器。它有兩個基本的特征:數據類型(dtype和型狀(shape)。dtype用來控制數據的類型,一個給定的tensor只能存貯一種類型的數據。Shape是整數數組,用來指示tensor里有多少個元素以及元素是如何組織的。可以把它當作容器的“形狀和大小”(見圖2-5)。

???????

??????????????????? 圖2-5? rank 為0,1,2,3,4的tensor

例如,一個1D tensor,也稱為向量(vector),它的rank為1。1D tensor的shape是一個只含有一個數字的數組,這個數字告訴我們1D tensor的長度是多少。將rank增加1,我們得到2D tensor,可以把它看作2D平面上的數字的網格(像灰度圖像)。2D tensor的shape有兩個數字,它告訴我們網格的高度和寬度。習慣上,rank-2 tensor被稱為矩陣,它由行和列組成。 再將rank增加1,我們得到3D tensor。如上圖,你可以把3D tensor看作數字的3D網格。3D tensor的shape有三個整數;它們分別告訴我們3D網格沿三個維度的大小。通常彩色圖像可以用3D tensor編碼。Rank為4的tensor(4D tensor)難于直接可視化,因為我們生活在三維空間里。4D tensors經常用在許多模型里,例如,深層卷積(deep convnets)。一個時長為10分鐘的video可以認為是一個4D tensors。TensorFlow里支持的tensors可以多達rank 6。實踐中, rank-5 tensors只用于一些合適的場合(例如,包含多個video的數據), 而rank-6 tensors更為少用。

張量的主要類型有

  • tf.Variable
  • tf.constant
  • tf.placeholder(雖然TensorFlow v2不再使用)

tf.constanttf.placeholder的值是在一個session運行過程中不可以改變的。 一旦它們有了值,它們就不能改變。例如,tf.placeholder可能包含你想在訓練神經網絡時使用的數據集。一旦賦值,它不會在評估階段改變。tf.Variable可能包含你的神經網絡的權重,它們會在訓練過程中改變,從而找到針對你的問題的最佳值。最后 tf.constant永遠不會改變。下一節告訴你如何使用這三種類型的張量,并在開發模型要注意什么。

2.1.1標量(Scalars),向量 Vectors, 和矩陣(Matrices)

我們以你可能已經熟悉的張量的例子開始,最簡單的張量是標量,它是來自實數域的一個常數(記住實數是任意精度的小數,正數和負數都可以)。數學上,我們記實數為R。更正式地,我們稱scalar為rank-0 張量。

精通數學的讀者可能會抗議,基于復數或二進制數定義張量完全有意義。一般地,只要0,1,加、減、乘、除有定義的數都可以構成張量,包括實數R,有理數Q,復數C, 和有限域例如Z2。

為了簡單起見,我們只假定實數張量,但是用其它域的數代替也是合理的。

如果標量是rank-0 張量,那rank-1張量是什么呢?正規的說,rank-1張量是向量,是實數的列表。習慣地,向量寫作列向量

?????????????????????????

或行向量

?????????????????????

標記上,所有的長度為2的列向量記為R2 × 1而長度為2的行向量記為R1 × 2。計算上,我們說列向量的形狀為 (2, 1), 而行向量的形狀為 (1, 2)。如果我們不想指明向量是行向量還是列向量,我們可以說它來自 R2集合且形狀為 (2)。張量的形狀對于理解TensorFlow的計算很重要,后面我們還會返回它。 向量的最簡單的用途是作為現實世界的坐標。

假如我們確定原點(你當前的地點),則世界上任意一點可以用相對于你當前地點的三個位移值來呈現(左右,前后,上下位移)。因此向量集R3可以呈現世界上的任意一點。

舉不同的例子,我們假定用高,寬,和顏色來描述貓。則視頻游戲貓可以用R3向量來表示。

????????????????????

這種表示通常稱為特征化(featurization)。即特征化是用向量表示真實世界中的一個實體。幾乎所有的機器學習算法都操作向量或張量。因此,特征化的過程是機器學習管線的重要部分。通常,特征化系統是機器學習系統中最為復雜的部分。假如我們有圖2-5所示的苯酚分子。

????????????????????????

圖2-5. 苯酚分子的表示.

我們要如何將這個分子式轉換為適合機器學習系統查詢的向量呢?有多種可能的方案,大部分方案使用分子片斷。用 1/0二值向量 ( 0, 1n)標記特定的片斷的存在與否。這個過程用圖Figure 2-2表示

???????????????????

圖 2-2. 用于特征化的片斷的選擇(那些包含OH)。這些片斷被哈希到固定長度的向量的索此中。這些位置被設置為1而其它位置設置為零。注意,這個過程聽起來很復雜。實際上構建機器學習系統最為困難的是確定如何將數據轉換為張量形式。對于某些數據,這種轉換是很顯然的。而對于別的數據(如分子式),轉換很復雜。對于機器學習的實踐者,沒有必要發明新的特征化方法因為學術文獻里有現存的,但是有必要讀研究論文來理解轉換數據流的最佳實踐。

現在我們已經確定rank-0張量為標量 (R)以及rank-1張量為向量 (Rn),那 rank-2張量是什么呢? 習慣上,rank-2張量是matrix:

???????????????????????????

這個矩陣有2行和2列。這種矩陣的集合稱為R2 × 2。返回到前面張量形狀的標記,這種矩陣的形狀為(2, 2)。習慣上,矩陣用來表示向量的變換。例如,在一個平面上旋轉一個向量一個角度 α可以用矩陣來進行

??????????????????????

為了理解這一點,我們記x單位向量 (1, 0)被矩陣乘轉換為向量(cos (α), sin (α))。 (我們后面講矩陣乘的定義,現在只簡單的講結果)。

????????????????????

這種變換可以用圖形展示。圖2-3展示原始的單位向量旋轉后的最終向量。

???????????????

圖2-3. 單位元的位置用cosine和sine參數化。

前面我們介紹了標量為rank-0 張量,向量為rank-1張量,矩陣為rank-2 張量。那么rank-3 張量是什么?在給出定義之前,想一下標量,向量,矩陣的共性是有幫助的。標量是一個數,向是多個數的列素。要找到向量里的某個數,需要知道它的索引。因此需要給向量一個索引元素(也是rank-1張量)。矩陣是多個數組成的表。要找到矩陣中的元素需要知道它所在的行和列。回此需要二個索引元素(也是 rank-2 張量)。很自然, rank-3張量是有三個索引元素的多個數的集合。把rank-3張量想像為長方體是很有幫助的,如圖2-4所示。

圖 2-4.一個rank-3張量可以看作多個數組成的長方體.

圖中rank-3張量 T的形狀為 (N, N, N)。可以通過指明 (i, j, k)作為索引得到任意元素。

張量與形狀之間存在一定的聯系。一個rank-1張量有一個維素數為1的形狀,一個rank-2 張量有一個維數為2的形狀,一個rank-3張量有一個維數為3的形狀。你會抗議,這與我們前面討論的行向量和列向量相反。通過我們的定義,列向量的形狀為(n, 1)。這不是讓列向量成為rank-2張量 (或矩陣嗎)? 正是這樣。記住不指明行向量或列向量的向量的形狀為 (n)。當我們指明一個向量是行向量或列向量時,我們實際上指明了將向量轉為矩陣的方法。

這種類型的維擴展是張量操作的一個常見技巧。 注意,另一種想像rank-3 張量的方法是把它當作相同形狀的矩陣的列表。假如W是形狀為(n, n)的矩陣,則張量Tijk = W1, ?,Wn 包含n個矩陣W注意黑白圖像可以表示為rank-2張量。假如我們有224 × 224-像素的黑白圖像。則pixel (i, j)為1/0 以編碼黑/白像素。黑白圖像可以用形狀為 (224, 224)的矩陣表示。現在考慮一個224 × 224 的彩色圖像,指定像素的色彩用三個獨立的RGB通道表示,即pixel (i, j)表示為元組 (r, g, b)來編碼這像素的紅、綠、藍的多少。 r, g, b是從0 到255的整數。現在彩色圖像可以用形狀為 (224, 224, 3)的rank-3張量表示。繼續分析,考慮彩色視頻。假如視頻的每一幀是224 × 224的彩色圖像,則一分鐘視頻 ( 60 fps)是形狀為 (224, 224, 3, 3600)的rank-4張量。進一步,10個這樣的視頻形成形狀為 (10, 224, 224, 3,3600)的 rank-5張量。通常,張量可以方便的表示數值數據。實踐中,大于rank-5 的張量很少見,但是設計允許任意張量的張量系統是明智的,因為聰明的用戶總會遇到設計者不會考慮到的情況。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84287.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flume 安裝與配置步驟

1.解壓 tar -zxvf apache-flume-1.9.0-bin.tar.gz 2.配置環境變量 vim /etc/profile export FLUME_HOME/home/wang/soft/flume/apache-flume-1.9.0-bin export PATH$PATH:$FLUME_HOME/bin source /etc/profile 3.創建必要的目錄 mkdir -p $FLUME_HOME/conf 4.創建 Flume 配置文…

還原線上 WebView 異常:手機端APP遠程調試

前端調試總被理解為開發階段的事,但在實際項目中,真正困難的調試往往發生在產品上線之后。用戶反饋“看不到內容”、“一直轉圈”、“點了沒反應”,而開發環境無法復現,測試機也正常運行,這時怎么定位、驗證和解決問題…

102頁滿分PPT | 汽車設備制造業企業信息化業務解決方案智能制造汽車黑燈工廠解決方案

這份文檔是一份汽車設備制造業企業信息化業務解決方案,詳細闡述了企業從生產到銷售的全流程信息化建設。針對企業目前手工管理為主、信息化程度低、數據追溯困難等問題,提出了建立統一信息化平臺的目標,涵蓋財務、業務、流程和數據的整合。方…

SQLite 表達式詳解

SQLite 表達式詳解 引言 SQLite 是一個輕量級的數據庫,廣泛用于移動設備和桌面應用程序。SQLite 的表達式是 SQL 語句的核心,它們用于查詢、更新和刪除數據庫中的數據。本文將詳細解釋 SQLite 的各種表達式,并探討它們在數據庫操作中的重要性。 表達式概述 在 SQLite 中…

沉浸式AI交互數字人技術解析

360智匯云沉浸式AI交互數字人支持開發者靈活接入和私有化部署大模型服務,構建面向業務場景的實時音視頻交互能力。系統集成了360智匯云自研的沉浸式AI交互數字人引擎與高性能 RTC 模塊,保障音視頻傳輸過程中的低延遲、高穩定性和高并發承載能力&#xff…

HarmonyOS 評論回復彈窗最佳實踐

HarmonyOS 評論回復彈窗最佳實踐 前言 在移動應用開發中,評論回復功能是一個常見且重要的交互場景。本文將詳細介紹如何在 HarmonyOS 中實現一個功能完善的評論回復彈窗,包括彈窗選型、富文本編輯、軟鍵盤適配等關鍵技術點。 功能概述 我們要實現的評…

Git 回退操作詳解:帶示例的“小白”指南

前言 在日常開發中,我們難免會遇到: 改錯代碼:推送之前才發現某些行根本就不該動提交錯誤:commit 信息打錯、提交到錯誤分支想回到之前版本:測試時發現之前版本是好的,需要回去查看 這就需要用到 Git 的…

redux以及react-redux

1.redux案例完整版 上一篇文章我們是沒有action文件,直接在countre組件與store以及reducer直接進行狀態的改變以及展示。 下面我們加上action文件,我們就不能直接通過dispatch傳,而是通過調用action里面的函數講我們傳入的參數變成action這種…

idea中配置svn及提交提示“未檢測到更改”提示

首先要安裝TortoiseSVN,選command line client tools; 在idea中,文件->設置->Subversion->如下圖 文件->設置->目錄映射->如下圖 初次導入到svn, 輸入服務器上的svn地址,等待成功即可;…

vue 實現dot-dropdown

<template><div class"app-container"><div class"mt30"></div><el-row :gutter"20"><!-- title --><!-- <div class"modt-box">導航管理</div> --><el-col :span"2&q…

使用 mysql2/promise 模塊返回以后,使用 await 返回數據總結

SELECT 返回結構 const [rows, fields] await db.query(SELECT * FROM folders);返回&#xff1a; rows: 是一個數組&#xff0c;包含所有查到的記錄。fields: 是字段的結構定義&#xff08;列信息&#xff09;&#xff0c;一般不用。 rows 是一個數組&#xff0c;包含所有…

Manus Metagloves pro高精度+無漂移+低延遲 ,重構VR/XR手部交互方式

manus metagloves pro是一款專為動畫制作、虛擬現實及游戲開發打造的高精度無線動作捕捉手套。采用先進的Quantum追蹤技術&#xff0c;實現毫米級動作捕捉&#xff0c;精準還原手指細節&#xff0c;顯著提升創作效率與交互真實感。 MANUS Metagloves Pro解鎖動捕 / 機器人 / XR…

Uniapp插件改造指南:如何讓vue-plugin支持HarmonyOS5原生能力?

一、分層架構設計 采用通用邏輯與平臺實現分離的三層結構&#xff1a; uni-plugin-harmony ├── common # 跨平臺通用層 │ ├── interfaces # 能力接口抽象&#xff08;如Scanner.ets&#xff09; │ └── utils # 工具類 ├── harmony …

P1040 [NOIP 2003 提高組] 加分二叉樹 題解

題目描述 設一個 n n n 個節點的二叉樹 tree \text{tree} tree 的中序遍歷為 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n)&#xff0c;每個節點都有一個分數&#xff08;均為正整數&#xff09;。任一棵子樹 subtree \text{subtree} subtree&#xff08;包含 tr…

【Golang面試題】Data Race 問題怎么檢測?

Go Race Detector 深度指南&#xff1a;原理、用法與實戰技巧 一、什么是數據競爭&#xff1f; 在并發編程中&#xff0c;數據競爭發生在兩個或多個 goroutine 同時訪問同一內存位置&#xff0c;且至少有一個是寫操作時。這種競爭會導致不可預測的行為和極其難以調試的問題。…

257. 二叉樹的所有路徑(js)

257. 二叉樹的所有路徑——DFS 回溯&#xff08;js&#xff09; 題目描述解題思路完整代碼時間復雜度分析 題目描述 257. 二叉樹的所有路徑 解題思路 題意理解 給定一棵二叉樹&#xff0c;要求返回所有從根節點到葉子節點的路徑&#xff0c;路徑以字符串形式表示&#xff0c…

自動化文檔生成工具(親測可運行)

本文介紹了一個用Java編寫的自動化文檔生成工具&#xff0c;通過讀取開發清單文本自動生成格式規范的Word文檔。該工具的主要特點包括&#xff1a; 采用Apache POI庫處理Word文檔&#xff0c;支持多級標題和段落自動生成實現中文數字轉換功能&#xff0c;將編號轉換為"一、…

湖北理元理律師事務所債務優化模型:法律與生活的平衡之道

在債務重組領域&#xff0c;專業機構需同時解決兩個矛盾&#xff1a;法律合規性與債務人可持續生存能力。湖北理元理律師事務所通過“三維干預模型”&#xff0c;在武漢某餐飲連鎖企業債務危機中驗證了該方案的有效性。 一、法律底層設計&#xff1a;還款方案的合法性審查 以該…

Web3-代幣ERC20/ERC721以及合約安全溢出和下溢的研究

Web3-代幣ERC20/ERC721以及合約安全溢出和下溢的研究 以太坊上的代幣 如果你對以太坊的世界有一些了解&#xff0c;你很可能聽人們聊過代幣— ERC20代幣 一個 代幣 在以太坊基本上就是一個遵循一些共同規則的智能合約——即它實現了所有其他代幣合約共享的一組標準函數&…

論文筆記 <交通燈><多智能體>MetaLight:基于價值的元強化學習用于交通信號控制

今天看的論文是這篇MetaLight:基于價值的元強化學習用于交通信號控制 里面提到的創新點就是MetaLight框架&#xff1a;他目標是讓交通信號控制智能體&#xff08;Agent&#xff09;在新路口&#xff08;即使結構或流量模式不同&#xff09;上能??快速學習??&#xff08;Few…