TensorFlow中的資料型別

2021-08-18 13:53:37 字數 1640 閱讀 8167

本文主要內容來自於史丹福大學課程cs20,有興趣的同學cs20。

一、python 原生型別

tensorflow接受了python自己的原生資料型別,例如python中的布林值型別,數值資料型別(整數,浮點數)和字串型別。單一值將轉換為0維張量(標量),列表值將轉換為1維張量(向量),列表套列表將被轉換成2維張量(矩陣)等等,以下示例來自於tensorflow for machine intelligence.

t_0 = 19 # treated as a 0-d tensor, or "scalar" 

tf.zeros_like(t_0) # ==> 0

tf.ones_like(t_0) # ==> 1

tf.zeros_like(t_1)                   # ==> [b'' b'' b'']

tf.ones_like(t_1)                    # ==> typeerror

t_2 = [[true, false, false],

[false, false, true],

[false, true, false]]         # treated as a 2-d tensor, or "matrix"

tf.zeros_like(t_2)                   # ==> 3x3 tensor, all elements are false

tf.ones_like(t_2)                    # ==> 3x3 tensor, all elements are true

二、tensorflow原生型別

就像numpy一樣,tensorflow也有屬於自己的資料型別,你會在tensorflow中看到諸如tf.int32, tf.float32除了這些之外,還有一些很有意思的資料型別例如tf.bfloat, tf.complex, tf.quint.下面是全部的tensorflow資料型別,截圖來自tf.dtype

三、numpy資料型別

你可能已經注意到了numpy和tensorflow有很多相似之處。tensorflow在設計之初就希望能夠與numpy有著很好的整合效果。numpy軟體包現在已經成為資料科學的通用語言。

tensorflow資料型別很多也是基於numpy的,事實上,如果你令 np.int32==tf.int32將會返回true.你也可以直接傳遞numpy資料型別直接給tensorflow中的ops。

tf.ones([2, 2], np.float32) ==> [[1.0 1.0], [1.0 1.0]]
請記得,我們的好朋友tf.session.run(),要求的輸入物件是乙個tensor但是它的輸出是乙個numpy陣列。事實上,在絕大多數場合,你可以同時使用tensorflow型別和numpy型別。

將資料傳遞到tensorflow時,我們可以將資料轉換為適當的型別,但某些資料型別仍然難以正確轉換,例如複數。 因此,通常將人工定義的張量物件建立為numpy陣列。 但是,我們還是建議盡可能使用tensorflow型別。

TensorFlow中的資料型別

tensorflow接受了python自己的原生資料型別,例如python中的布林值型別,數值資料型別 整數,浮點數 和字串型別。單一值將轉換為0維張量 標量 列表值將轉換為1維張量 向量 列表套列表將被轉換成2維張量 矩陣 等等,以下示例來自於tensorflow for machine inte...

Tensorflow中資料集的相關操作

在資料集框架中,每乙個資料集代表乙個資料 其資料 有一下幾種 張量,tfrecord檔案,文字檔案,sharding檔案等等。一.資料集dataset的常用構造方法 1 從乙個tensor中構造資料集 dataset tf.data.dataset.from tensor slices tensor...

Tensorflow中的Lazy load問題

用tensorflow訓練或者inference模型的時候,有時候會遇到執行越來越慢,最終記憶體被佔滿,導致電腦宕機的問題,我們稱之為記憶體溢位。出現這種問題很可能是因為在乙個session中,graph迴圈建立重複的節點所導致的lazy load問題。舉個例子,用tensorflow迴圈做多次加法...