1. 程式人生 > >TensorFlow系列03——TensorFlow基本概念Tensor理解

TensorFlow系列03——TensorFlow基本概念Tensor理解

【前言】這篇文章將告訴你tensorflow的基本概念以及tensorflow的基本操作

TensorFlow的基本概念Tensor

  1. TensorFlow的核心API

TensorFlow提供非常豐富的API,最底層的API—TensorFlow Core—提供了完整的程式設計控制介面。更高級別的API則是基於TensorFlow Core API之上,並且非常容易學習和使用,更高層次的API能夠使一些重複的工作變得更加簡單。比如tf.contrib.learn幫助你管理資料集等。

這篇博文將從TensorFlow Core開始。

  1. Tensors(張量)

張量是所有深度學習框架中最核心的元件,TensorFlow中也是,在TensorFlow中,將資料表示為Tensor,一個Tensor是一個多維陣列,例如,你可以將一批影象表示為一個四維陣列[batch,height,width,channels],陣列中的值均為浮點數。

在幾何代數中定義的張量是基於向量和矩陣的推廣,通俗理解,我們可以將標量視為零階張量,那麼矩陣就是二階張量。

舉例來說,我們可以將任意一張RGB彩色圖片表示成一個三階張量(三個維度分別是圖片的高度、寬度和色彩資料)。

如圖是一張普通水果圖片按照RGB三原色拆分成的三張灰度圖片,如果將這種表示方法用張量的形式寫出來,就是下圖的表格。

圖中只顯示了前5行、320列資料,每個方格代表一個畫素點,其中的資料[1.0,1.0,1.0]即為顏色。假設用[1.0,0,0]表示紅色,[0,1.0,0]代表綠色,[0,0,1.0]代表藍色,那麼如圖所示,前面5行的資料則全部是白色。

將這一定義進行擴充套件,我們也可以用四階張量表示一個包含多張圖片的資料集,其中的四個維度分別是:圖片在資料集中的編號,圖片高度、寬度,以及色彩資料。

將各種各樣的資料抽象成張量表示,然後再輸入神經網路模型進行後續處理是一種非常必要且高效的策略。因為如果沒有這一步驟,我們就需要根據各種不同型別的資料組織形式定義各種不同型別的資料操作,這會浪費大量的開發者精力。更關鍵的是,當資料處理完成後,我們還可以方便地將張量再轉換回想要的格式。例如Python NumPy包中numpy.imread和numpy.imsave兩個方法,分別用來將圖片轉換成張量物件(即程式碼中的Tensor物件),和將張量再轉換成圖片儲存起來。

  1. 高維向量(Multidimensional Arrays)在matlab中的定義

An array having more than two dimensions is called a multidimensional array in the MATLAB® application. Multidimensional arrays in MATLAB are an extension of the normal two-dimensional matrix. Matrices have two dimensions: the row dimension and the column dimension.

You can access a two-dimensional matrix element with two subscripts: the first representing the row index, and the second representing the column index.

Multidimensional arrays use additional subscripts for indexing. A three-dimensional array, for example, uses three subscripts:

  • The first references array dimension 1, the row.
  • The second references dimension 2, the column.
  • The third references dimension 3. This illustration uses the concept of a page to represent dimensions 3 and higher.

    To access the element in the second row, third column of page 2, for example, you use the subscripts (2,3,2).

    As you add dimensions to an array, you also add subscripts. A four-dimensional array, for example, has four subscripts. The first two reference a row-column pair; the second two access the third and fourth dimensions of data.

    Most of the operations that you can perform on matrices (i.e., two-dimensional arrays) can also be done on multidimensional arrays.

  1. 理解高維陣列的建議

需要和高維陣列(Tensor)打交道的話,思考時不要想著row, column, page這些術語, 要用dim_1, dim_2,... dim_M 來思考。好多地方說Matlab是先存column, 用我們的術語其實就是Matlab按照從左到右:dim_1, dim_2,... dim_M的順序儲存元素。例如想想下面 2 x 4 x 3 x 5 矩陣的儲存順序:

  1. 視覺化高維陣列

  1. Rank

Rank本意是矩陣的秩,不過Tensor Rank和Matrix Rank的意義不太一樣,這裡就還叫Rank防止混淆了。Tensor Rank的意義看起來更像是維度,比如Rank = 1就是向量,Rank = 2就是矩陣了。(Rank = 0就是一個值了)

官網原話:A tensor's rank is its number of dimensions. 

3 # a rank 0 tensor; this is a scalar with shape []
[1. ,2., 3.] # a rank 1 tensor; this is a vector with shape [3]
[[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3]
[[[1., 2., 3.]], [[7., 8., 9.]]] # a rank 3 tensor with shape [2, 1, 3]

  1. Shape

Shape就是Tensor在各個維度上的長度組成的陣列,譬如Rank = 0的Tensor Shape = [](因為沒有維度嘛),Rank = 1的Tensor Shape = [ a ],Rank = 2的Tensor Shape = [ a, b ]這樣。

相關推薦

TensorFlow系列03——TensorFlow基本概念Tensor理解

【前言】這篇文章將告訴你tensorflow的基本概念以及tensorflow的基本操作 TensorFlow的基本概念Tensor TensorFlow的核心API TensorFlow提供非常豐富的API,最底層的API—TensorFlow Core—提供了完整的程式設

tensorflow學習(2):tensorflow基本概念理解

前言: tensorflow中有很多基本概念要理解,最好的方法是去官網跟著教程一步一步看,這裡還有一些翻譯的版本,對照著看有助於理解:tensorflow1.0 文件翻譯 正文: 一,構建並執行計算圖的必要過程 1,graph(圖計算):詳見tf.G

TensorFlow筆記(1)——TensorFlow中的相關基本概念

前言 Tensorflow 是一個程式設計系統,使用圖(graph)來表示計算任務,圖(graph)中的節點稱之為 op (operation),一個 op 獲得 0 個或多個 Tensor,執行計算,產生 0 個或多個 Tensor。Tensor 看作是一個 n 維的陣列或列表。圖必須

SCOM的基本概念理解&警報的處理

scom警報處理警報在介紹了基本的SCOM安裝以及管理包的作用以及實現後,感覺缺少一些基本知識概念的介紹,好像地基沒有打穩的感覺,現在就給大家介紹一下基本的概念,以及平時運維工作中遇到這些概念或者警報出現的原理以及基本的處理方法。常說的四大金剛,即在警報方面的四個主要的概念:發現(Discover):在SCO

Oracle sequence的基本概念理解

side frame create varchar2 inf sel *** 順序 -s 1.如何查看sequence的定義 2.dba_sequences相關字的定義 3.如何修改sequence *************************************

【ROS】基本概念理解:程式包、節點、訊息、話題、服務、包

程式包(package): 程式包是ROS中組織軟體的主要形式,可以編寫程式碼並進行編譯、執行等操作,相當於一個project。一個程式包一般包含程式檔案(src資料夾中的.cpp和.py檔案)、編譯描述檔案(package.xml)和配置檔案(CMakeList.txt)等。 &nbs

[資料結構]樹結構的基本概念理解

1.樹的有關基本概念 定義 樹(Tree)是n(n=0)個結點的有限集。n=0時稱為空樹。在任意一棵非空樹中:(1)有且僅有一個特定的稱為根(Root)的結點;(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集T1、T2、……Tm,其中每一個集合本身又是一棵樹

【數字影象處理系列二】基本概念:亮度、對比度、飽和度、銳化、解析度

本系列python版本:python3.5.4 本系列opencv-python版本:opencv-python3.4.2.17 本系列使用的開發環境是jupyter notebook,是一個python的互動式開發環境,測試十分方便,並集成了vim

Cuda程式設計系列-Cuda程式設計基本概念&程式設計模型

原文連結 系列文章: Cuda程式設計101:Cuda程式設計的基本概念及程式設計模型 Cuda程式設計102:Cuda程式效能相關話題 Cuda程式設計103:Cuda多卡程式設計 Cuda tips: nvcc的-code、-arch、-gencode選項 基本想法 在介紹編

java反射機制一(反射的基本概念理解

反射就是對一個類進行解剖,把一個類中的各種成分對映成一個類 java程式執行位元組碼檔案的過程 1啟動jvm程序 2把所有相關的位元組碼加入記憶體(類載入器) 3.系統為每個位元組碼生成一個class物件 4初始化(靜態程式碼塊) 5靜態成員變數 得到一個類的C

【併發程式設計】對阻塞/非阻塞、同步/非同步、併發/並行等基本概念理解

1. 併發與並行 併發:concurrency 並行:parallelism 開發過程中,常常會接觸併發有關的概念,比如併發計算(concurrent computing),併發系統( concurrent system),併發控制(concurrent

A/B 測試的基本概念舉例理解以及具體實現方法【傳統A/B測試基於後端的 A/B 測試(Back-end AB test),現在基本上基於前端js在客戶端進行分流,有更多優點,請看裡面】

文章來源:http://www.aliued.cn/2010/09/27/ab-testing-realization-method.html 什麼是A/B測試?以及如何進行? 很多朋友都問我怎麼進行A/B測試,我一般都不直接回答他們的問題,而是首先問一句:“你的日

訊息中介軟體系列-JMS基本概念和模型

一、定義: JMS 全稱:Java Message Service,Java訊息服務,是Java EE中的一個技術,它定義了Java 中訪問訊息中介軟體的介面,並沒有給予實現,實現JMS介面的訊息中介軟體成為JMS Provider,例如:Active MQ 二、訊息模型

Hive系列(一)Hive基本概念

一、Hive基本概念 1.1 什麼是Hive Hive:由Facebook開源用於解決海量結構化日誌的資料統計。 Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類SQL查詢功能。 本質是:將HQL轉化成Map

深度學習基本概念理解

深度學習是一種多層表示學習方法,用簡單的非線性模組構建而成,這些模組將上一層表示(從原始資料開始)轉換為更高層,更抽象的表示。當一個學習系統由足夠多這樣簡單的非線性模組構建時,可以學習非常複雜的功能。

Elasticsearch系列---Elasticsearch的基本概念及工作原理

基本概念 Elasticsearch有幾個核心的概念,花幾分鐘時間瞭解一下,有助於後面章節的學習。 NRT Near Realtime,近實時,有兩個層面的含義,一是從寫入一條資料到這條資料可以被搜尋,有一段非常小的延遲(大約1秒左右),二是基於Elasticsearch的搜尋和分析操作,耗時可以達到秒級。

Gin框架系列03:換個姿勢理解中介軟體

什麼是中介軟體 中介軟體,英譯middleware,顧名思義,放在中間的物件,那麼放在誰中間呢?本來,客戶端可以直接請求到服務端介面。 現在,中介軟體橫插一腳,它能在請求到達介面之前攔截請求,做一些特殊處理,比如日誌記錄,故障處理等。這就是今天要講述的中介軟體,那麼,它在Gin框架中是怎麼使用的呢?

#####tensorflow+入門筆記︱基本張量tensor理解tensorflow執行結構 ***********######

Gokula Krishnan Santhanam認為,大部分深度學習框架都包含以下五個核心元件: 張量(Tensor)基於張量的各種操作計算圖(Computation Graph)自動微分(Automatic Differentiation)工具BLAS、cuBLAS、cuDNN等拓展包 . . 一、

rabbitmq系列-基本概念理解

消息中間件 proto 連接數 接收 chang protoc 匹配 分享 img 1.簡介 RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue protocol)的開源實現。AMQP高級消息隊列,說白了就是一個開源的消息中間件

TensorFlow(二):基本概念以及練習

ssi AR oss -a n) counter 全部 enter num 一:基本概念 1、使用圖(graphs)來表示計算任務 2、在被稱之為會話(Session)的上下文(context)中執行圖 3、使用tensor表示數據 4、通過變量(Variable)維護狀