相較於1.0,tensorflow2.0是一次重大革命性的改進,主要是以下幾個方面。
(1)1.0 使用的是靜態圖機制,即分為構建階段和部署階段,構建階段只描述了計算圖,並沒有實質的進行計算,而是在執行階段中,在會話層進行統一的一次性計算,優點是高效節省資源,卻沒有中間結果,程式不夠簡潔,不宜除錯。
2.0 預設使用的是動態圖機制,可以立刻執行計算並返回結果,所以可以快速的建立和除錯模型。但也可以指定靜態圖機制提高效率。2.0的方法是:兼顧易用性和執行效率,在程式除錯階段使用動態圖,快速建立模型、除錯程式;在部署階段,採用靜態圖機制,從而提高模型的效能和部署能力。
(2)1.0有很多重複冗餘的api,不利於程式共享,維護成本高。2.0 清理、整合了重複的api,將tf.keras作為構建和訓練模型的標準高階api
(3)將 eager execution 作為預設執行模式。
tensorflow 中張量是由 tensor 類實現,每個張量都是乙個 tensor 物件。
其實,張量就是多維陣列,像是 python 自帶的列表 list,numpy 中的陣列物件 ndarray,他們都可以作為資料的載體,但他們之間也有一些區別:
python 中的列表(list):
numpy陣列(ndarray):
tensorflow張量(tensor):
為了降低初學者的難度,tensorflow的基本運算、引數命名、運算規則、api的設計等與numpy非常相近,所以有了numpy 的基礎,tensorflow是很容易入手的。
下面對三種 value 引數:數字,python原生列表,numpy陣列 分別給出詳細說明。
其中,id是張量的序號,由系統自動按順序給出。
通過numpy() 得到張量對應的 numpy 陣列,通過 type(a) ,可以知道這是乙個 eager 模式的張量。
張量元素的資料型別
在建立張量時,指定元素的資料型別。
#要使用 tf.資料型別,否則報錯
可以使用 tf.is_tensor()函式判斷是否是張量物件。
也可以使用python函式,isinstance()函式,判斷指定物件是否屬於指定的類。
注意:shape 可以用 圓括號 或 方括號,(2, 1) 或 [2, 1]
為了避免混淆,建議使用時加上引數。
tensorflow 中使用 tf.random 模組建立隨機數張量,包括正態分佈、截斷正態分佈、均勻分布張量等。
注:只說明第乙個引數 shape 時,則預設建立標準正態分佈,即 均值為 0,標準差為 1.
返回的是乙個截斷的正態分佈,是保證生成的正態分佈在 -2μ ~ 2μ 之間,如果不在則會重新生成,保證了生成值在均值附近。
我們在使用 tf.random 模組生成隨機張量時,可以通過tf.random.set_seed() 函式設定隨機數種子,相同的種子可以產生相同的值。
可以使用函式 tf.random.shuffle() 函式隨機打亂傳入引數的第一維資料。
和 python 、numpy中的range函式一樣,tensorflow 可以使用 range() 建立一段序列張量。
ndim、shape、dtype:維度、形狀、資料型別。
獲取tensor物件的形狀、元素總數 和 維度
以上便是tensorflow中的張量介紹。
TensorFlow01 二進位制檔案讀取
實現 讀取檔案列表 file name os.listdir data cifar file list os.path.join data ficar file for file in file name 構造檔名度列 file queue tf.train.string input produce...
初步認識Tensorflow
不多說,直接上乾貨!tensorflow是乙個開源軟體庫,用於使用資料流圖進行數值計算。換句話說,即是構建深度學習模型的最佳方式。tensorflow的官網 tensorflow 翻譯過來,就是 tensorflow 是使用資料流圖進行數值計算的開源軟體庫。圖中的節點表示數 算,而圖形邊緣表示在它們...
01 認識演算法
資料結構是指相互之間存在的一種或多種特定關係的資料元素集合。資料型別按結構特徵劃分 五大特性 資料結構是有限的,只有寥寥數種,而演算法則是琳琅滿目的。資料結構就彷彿乙個蘋果,演算法則是你選擇吃蘋果的方式。function sum n return total 上面是乙個累加求和的方法,假設每條語句執...