tensorflow 張量的階、形狀、資料型別及None在tensor中表示的意思
阿新 • • 發佈:2019-01-09
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]
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]
階 | 數學例項 | Python 例子 |
---|---|---|
0 | 純量 (只有大小) | s = 483 |
1 | 向量(大小和方向) | v = [1.1, 2.2, 3.3] |
2 | 矩陣(資料表) | m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] |
3 | 3階張量 (資料立體) | t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]] |
n | n階 (自己想想看) | .... |
形狀
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_FLOAT | tf.float32 | 32 位浮點數. |
DT_DOUBLE | tf.float64 | 64 位浮點數. |
DT_INT64 | tf.int64 | 64 位有符號整型. |
DT_INT32 | tf.int32 | 32 位有符號整型. |
DT_INT16 | tf.int16 | 16 位有符號整型. |
DT_INT8 | tf.int8 | 8 位有符號整型. |
DT_UINT8 | tf.uint8 | 8 位無符號整型. |
DT_STRING | tf.string | 可變長度的位元組陣列.每一個張量元素都是一個位元組陣列. |
DT_BOOL | tf.bool | 布林型. |
DT_COMPLEX64 | tf.complex64 | 由兩個32位浮點陣列成的複數:實數和虛數. |
DT_QINT32 | tf.qint32 | 用於量化Ops的32位有符號整型. |
DT_QINT8 | tf.qint8 | 用於量化Ops的8位有符號整型. |
DT_QUINT8 | tf.quint8 | 用於量化Ops的8位無符號整型. |