1. 程式人生 > >tensorflow 張量的階、形狀、資料型別及None在tensor中表示的意思

tensorflow 張量的階、形狀、資料型別及None在tensor中表示的意思

x = tf.placeholder(tf.float32, [None, 784])

x isn't a specific value. It's a placeholder, a value that we'll input when we ask TensorFlow to run a computation. We want to be able to input any number of MNIST images, each flattened into a 784-dimensional vector. We represent this as a 2-D tensor of floating-point numbers, with a shape [None, 784]

. (Here None means that a dimension can be of any length.)

TensorFlow用張量這種資料結構來表示所有的資料.你可以把一個張量想象成一個n維的陣列或列表.一個張量有一個靜態型別和動態型別的維數.張量可以在圖中的節點之間流通.

在TensorFlow系統中,張量的維數來被描述為.但是張量的階和矩陣的階並不是同一個概念.張量的階(有時是關於如順序度數或者是n維)是張量維數的一個數量描述.比如,下面的張量(使用Python中list定義的)就是2階.

    t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

你可以認為一個二階張量就是我們平常所說的矩陣,一階張量可以認為是一個向量.對於一個二階張量你可以用語句t[i, j]

來訪問其中的任何元素.而對於三階張量你可以用't[i, j, k]'來訪問其中的任何元素.

數學例項Python 例子
0純量 (只有大小)s = 483
1向量(大小和方向)v = [1.1, 2.2, 3.3]
2矩陣(資料表)m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
33階張量 (資料立體)t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]]
nn階 (自己想想看)....

形狀

TensorFlow文件中使用了三種記號來方便地描述張量的維度:階,形狀以及維數.下表展示了他們之間的關係:

形狀維數例項
0[ ]0-D一個 0維張量. 一個純量.
1[D0]1-D一個1維張量的形式[5].
2[D0, D1]2-D一個2維張量的形式[3, 4].
3[D0, D1, D2]3-D一個3維張量的形式 [1, 4, 3].
n[D0, D1, ... Dn]n-D一個n維張量的形式 [D0, D1, ... Dn].

形狀可以通過Python中的整數列表或元祖(int list或tuples)來表示,也或者用TensorShape class.

資料型別

除了維度,Tensors有一個數據型別屬性.你可以為一個張量指定下列資料型別中的任意一個型別:

資料型別Python 型別描述
DT_FLOATtf.float3232 位浮點數.
DT_DOUBLEtf.float6464 位浮點數.
DT_INT64tf.int6464 位有符號整型.
DT_INT32tf.int3232 位有符號整型.
DT_INT16tf.int1616 位有符號整型.
DT_INT8tf.int88 位有符號整型.
DT_UINT8tf.uint88 位無符號整型.
DT_STRINGtf.string可變長度的位元組陣列.每一個張量元素都是一個位元組陣列.
DT_BOOLtf.bool布林型.
DT_COMPLEX64tf.complex64由兩個32位浮點陣列成的複數:實數和虛數.
DT_QINT32tf.qint32用於量化Ops的32位有符號整型.
DT_QINT8tf.qint8用於量化Ops的8位有符號整型.
DT_QUINT8tf.quint8用於量化Ops的8位無符號整型.