首頁 > 軟體

TensorFlow 常用函數整理

2020-06-16 16:51:49

TensorFlow 將圖形定義轉換成分散式執行的操作, 以充分利用可用的計算資源(如 CPU 或 GPU。一般你不需要顯式指定使用 CPU 還是 GPU, TensorFlow 能自動檢測。如果檢測到 GPU, TensorFlow 會盡可能地利用找到的第一個 GPU 來執行操作.平行計算能讓代價大的演算法計算加速執行,TensorFlow也在實現上對複雜操作進行了有效的改進。大部分核相關的操作都是裝置相關的實現,比如GPU。

下面是一些重要的操作/核:

操作組 操作
Maths Add, Sub, Mul, Div, Exp, Log, Greater, Less, Equal
Array Concat, Slice, Split, Constant, Rank, Shape, Shuffle
Matrix MatMul, MatrixInverse, MatrixDeterminant
Neuronal Network SoftMax, Sigmoid, ReLU, Convolution2D, MaxPool
Checkpointing Save, Restore
Queues and syncronizations Enqueue, Dequeue, MutexAcquire, MutexRelease
Flow control Merge, Switch, Enter, Leave, NextIteration

一、 TensorFlow的算術操作 

操作 描述
tf.add(x, y, name=None) 求和
tf.sub(x, y, name=None) 減法
tf.mul(x, y, name=None) 乘法
tf.div(x, y, name=None) 除法
tf.mod(x, y, name=None) 取模
tf.abs(x, name=None) 求絕對值
tf.neg(x, name=None)

取負 (y = -x)

tf.sign(x, name=None)

返回符號

y = sign(x) = -1 if x < 0; 0 if x == 0; 1 if x > 0.

tf.inv(x, name=None) 取反
tf.square(x, name=None) 計算平方 (y = x * x = x^2)
tf.round(x, name=None)

捨入最接近的整數

# ‘a’ is [0.9, 2.5, 2.3, -4.4]
tf.round(a) ==> [ 1.0, 3.0, 2.0, -4.0 ]

tf.sqrt(x, name=None) 開根號 (y = sqrt{x} = x^{1/2}).
tf.pow(x, y, name=None)

冪次方 (元素級)

# tensor ‘x’ is [[2, 2], [3, 3]]
# tensor ‘y’ is [[8, 16], [2, 3]]
tf.pow(x, y) ==> [[256, 65536], [9, 27]]

tf.exp(x, name=None) 計算e的次方
tf.log(x, name=None) 計算log,一個輸入計算e的ln,兩輸入以第二輸入為底
tf.maximum(x, y, name=None) 返回最大值 (x > y ? x : y)
tf.minimum(x, y, name=None) 返回最小值 (x < y ? x : y)
tf.cos(x, name=None) 三角函數cosine
tf.sin(x, name=None) 三角函數sine
tf.tan(x, name=None) 三角函數tan
tf.atan(x, name=None) 三角函數ctan

二、張量操作Tensor Transformations

2.1  資料型別轉換Casting

操作 描述
tf.string_to_number
(string_tensor, out_type=None, name=None)
字串轉為數位
tf.to_double(x, name=’ToDouble’) 轉為64位元浮點型別–float64
tf.to_float(x, name=’ToFloat’) 轉為32位元浮點型別–float32
tf.to_int32(x, name=’ToInt32’) 轉為32位元整型–int32
tf.to_int64(x, name=’ToInt64’) 轉為64位元整型–int64
tf.cast(x, dtype, name=None)

將x或者x.values轉換為dtype

# tensor a is [1.8, 2.2], dtype=tf.float
tf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32

2.2  形狀操作Shapes and Shaping

操作 描述
tf.shape(input, name=None)

返回資料的shape

# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]
shape(t) ==> [2, 2, 3]

tf.size(input, name=None)

返回資料的元素數量

# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]]
size(t) ==> 12

tf.rank(input, name=None)

返回tensor的rank(維度)

注意:此rank不同於矩陣的rank,
tensor的rank表示一個tensor需要的索引數目來唯一表示任何一個元素
也就是通常所說的 “order”, “degree”或”ndims”
#’t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]
# shape of tensor ‘t’ is [2, 2, 3]
rank(t) ==> 3

tf.reshape(tensor, shape, name=None)

改變tensor的形狀

# tensor ‘t’ is [1, 2, 3, 4, 5, 6, 7, 8, 9]
# tensor ‘t’ has shape [9]
reshape(t, [3, 3]) ==> 
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
#如果shape有元素[-1],表示在該維度打平至一維
# -1 將自動推導得為 9:
reshape(t, [2, -1]) ==> 
[[1, 1, 1, 2, 2, 2, 3, 3, 3],
[4, 4, 4, 5, 5, 5, 6, 6, 6]]

tf.expand_dims(input, dim, name=None)

IT145.com E-mail:sddin#qq.com