tensorflow function

一、Tensor 之间的运算规则

  • 相同大小 Tensor 之间的任何算术运算都会将运算应用到元素级
  • 不同大小 Tensor(要求dimension 0 必须相同) 之间的运算叫做广播(broadcasting)
  • Tensor 与 Scalar(0维 tensor) 间的算术运算会将那个标量值传播到各个元素
  • Note: TensorFLow 在进行数学运算时,一定要求各个 Tensor 数据类型一致

二、常用操作符和基本数学函数

大多数运算符都进行了重载操作,使我们可以快速使用 (+ - * /) 等,但是有一点不好的是使用重载操作符后就不能为每个操作命名了。

 
  1. # 算术操作符:+ - * / %

  2. tf.add(x, y, name=None) # 加法(支持 broadcasting)

  3. tf.subtract(x, y, name=None) # 减法

  4. tf.multiply(x, y, name=None) # 乘法

  5. tf.divide(x, y, name=None) # 浮点除法, 返回浮点数(python3 除法)

  6. tf.mod(x, y, name=None) # 取余

  7.  
  8.  
  9. # 幂指对数操作符:^ ^2 ^0.5 e^ ln

  10. tf.pow(x, y, name=None) # 幂次方

  11. tf.square(x, name=None) # 平方

  12. tf.sqrt(x, name=None) # 开根号,必须传入浮点数或复数

  13. tf.exp(x, name=None) # 计算 e 的次方

  14. tf.log(x, name=None) # 以 e 为底,必须传入浮点数或复数

  15.  
  16.  
  17. # 取符号、负、倒数、绝对值、近似、两数中较大/小的

  18. tf.negative(x, name=None) # 取负(y = -x).

  19. tf.sign(x, name=None) # 返回 x 的符号

  20. tf.reciprocal(x, name=None) # 取倒数

  21. tf.abs(x, name=None) # 求绝对值

  22. tf.round(x, name=None) # 四舍五入

  23. tf.ceil(x, name=None) # 向上取整

  24. tf.floor(x, name=None) # 向下取整

  25. tf.rint(x, name=None) # 取最接近的整数

  26. tf.maximum(x, y, name=None) # 返回两tensor中的最大值 (x > y ? x : y)

  27. tf.minimum(x, y, name=None) # 返回两tensor中的最小值 (x < y ? x : y)

  28.  
  29.  
  30. # 三角函数和反三角函数

  31. tf.cos(x, name=None)

  32. tf.sin(x, name=None)

  33. tf.tan(x, name=None)

  34. tf.acos(x, name=None)

  35. tf.asin(x, name=None)

  36. tf.atan(x, name=None)

  37.  
  38.  
  39. # 其它

  40. tf.div(x, y, name=None) # python 2.7 除法, x/y-->int or x/float(y)-->float

  41. tf.truediv(x, y, name=None) # python 3 除法, x/y-->float

  42. tf.floordiv(x, y, name=None) # python 3 除法, x//y-->int

  43. tf.realdiv(x, y, name=None)

  44. tf.truncatediv(x, y, name=None)

  45. tf.floor_div(x, y, name=None)

  46. tf.truncatemod(x, y, name=None)

  47. tf.floormod(x, y, name=None)

  48. tf.cross(x, y, name=None)

  49. tf.add_n(inputs, name=None) # inputs: A list of Tensor objects, each with same shape and type

  50. tf.squared_difference(x, y, name=None)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

三、矩阵数学函数

 
  1. # 矩阵乘法(tensors of rank >= 2)

  2. tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)

  3.  
  4.  
  5. # 转置,可以通过指定 perm=[1, 0] 来进行轴变换

  6. tf.transpose(a, perm=None, name='transpose')

  7.  
  8.  
  9. # 在张量 a 的最后两个维度上进行转置

  10. tf.matrix_transpose(a, name='matrix_transpose')

  11. # Matrix with two batch dimensions, x.shape is [1, 2, 3, 4]

  12. # tf.matrix_transpose(x) is shape [1, 2, 4, 3]

  13.  
  14.  
  15. # 求矩阵的迹

  16. tf.trace(x, name=None)

  17.  
  18.  
  19. # 计算方阵行列式的值

  20. tf.matrix_determinant(input, name=None)

  21.  
  22.  
  23. # 求解可逆方阵的逆,input 必须为浮点型或复数

  24. tf.matrix_inverse(input, adjoint=None, name=None)

  25.  
  26.  
  27. # 奇异值分解

  28. tf.svd(tensor, full_matrices=False, compute_uv=True, name=None)

  29.  
  30.  
  31. # QR 分解

  32. tf.qr(input, full_matrices=None, name=None)

  33.  
  34.  
  35. # 求张量的范数(默认2)

  36. tf.norm(tensor, ord='euclidean', axis=None, keep_dims=False, name=None)

  37.  
  38.  
  39.  
  40. # 构建一个单位矩阵, 或者 batch 个矩阵,batch_shape 以 list 的形式传入

  41. tf.eye(num_rows, num_columns=None, batch_shape=None, dtype=tf.float32, name=None)

  42. # Construct one identity matrix.

  43. tf.eye(2)

  44. ==> [[1., 0.],

  45. [0., 1.]]

  46.  
  47. # Construct a batch of 3 identity matricies, each 2 x 2.

  48. # batch_identity[i, :, :] is a 2 x 2 identity matrix, i = 0, 1, 2.

  49. batch_identity = tf.eye(2, batch_shape=[3])

  50.  
  51. # Construct one 2 x 3 "identity" matrix

  52. tf.eye(2, num_columns=3)

  53. ==> [[ 1., 0., 0.],

  54. [ 0., 1., 0.]]

  55.  
  56.  
  57. # 构建一个对角矩阵,rank = 2*rank(diagonal)

  58. tf.diag(diagonal, name=None)

  59. # 'diagonal' is [1, 2, 3, 4]

  60. tf.diag(diagonal) ==> [[1, 0, 0, 0]

  61. [0, 2, 0, 0]

  62. [0, 0, 3, 0]

  63. [0, 0, 0, 4]]

  64.  
  65.  
  66.  
  67. # 其它

  68. tf.diag_part

  69. tf.matrix_diag

  70. tf.matrix_diag_part

  71. tf.matrix_band_part

  72. tf.matrix_set_diag

  73. tf.cholesky

  74. tf.cholesky_solve

  75. tf.matrix_solve

  76. tf.matrix_triangular_solve

  77. tf.matrix_solve_ls

  78. tf.self_adjoint_eig

  79. tf.self_adjoint_eigvals

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

四、Reduction:reduce various dimensions of a tensor

 
  1. # 计算输入 tensor 所有元素的和,或者计算指定的轴所有元素的和

  2. tf.reduce_sum(input_tensor, axis=None, keep_dims=False, name=None)

  3. # 'x' is [[1, 1, 1]

  4. # [1, 1, 1]]

  5. tf.reduce_sum(x) ==> 6

  6. tf.reduce_sum(x, 0) ==> [2, 2, 2]

  7. tf.reduce_sum(x, 1) ==> [3, 3]

  8. tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]] # 维度不缩减

  9. tf.reduce_sum(x, [0, 1]) ==> 6

  10.  
  11.  
  12. # 计算输入 tensor 所有元素的均值/最大值/最小值/积/逻辑与/或

  13. # 或者计算指定的轴所有元素的均值/最大值/最小值/积/逻辑与/或(just like reduce_sum)

  14. tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None)

  15. tf.reduce_max(input_tensor, axis=None, keep_dims=False, name=None)

  16. tf.reduce_min(input_tensor, axis=None, keep_dims=False, name=None)

  17. tf.reduce_prod(input_tensor, axis=None, keep_dims=False, name=None)

  18. tf.reduce_all(input_tensor, axis=None, keep_dims=False, name=None) # 全部满足条件

  19. tf.reduce_any(input_tensor, axis=None, keep_dims=False, name=None) #至少有一个满足条件

  20.  
  21.  
  22. -------------------------------------------

  23. # 分界线以上和 Numpy 中相应的用法完全一致

  24. -------------------------------------------

  25.  
  26.  
  27.  
  28. # inputs 为一 list, 计算 list 中所有元素的累计和,

  29. # tf.add(x, y, name=None)只能计算两个元素的和,此函数相当于扩展了其功能

  30. tf.accumulate_n(inputs, shape=None, tensor_dtype=None, name=None)

  31.  
  32.  
  33. # Computes log(sum(exp(elements across dimensions of a tensor)))

  34. tf.reduce_logsumexp(input_tensor, axis=None, keep_dims=False, name=None)

  35.  
  36.  
  37. # Computes number of nonzero elements across dimensions of a tensor

  38. tf.count_nonzero(input_tensor, axis=None, keep_dims=False, name=None)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

五、Scan:perform scans (running totals) across one axis of a tensor

 
  1. # Compute the cumulative sum of the tensor x along axis

  2. tf.cumsum(x, axis=0, exclusive=False, reverse=False, name=None)

  3. # Eg:

  4. tf.cumsum([a, b, c]) # => [a, a + b, a + b + c]

  5. tf.cumsum([a, b, c], exclusive=True) # => [0, a, a + b]

  6. tf.cumsum([a, b, c], reverse=True) # => [a + b + c, b + c, c]

  7. tf.cumsum([a, b, c], exclusive=True, reverse=True) # => [b + c, c, 0]

  8.  
  9.  
  10. # Compute the cumulative product of the tensor x along axis

  11. tf.cumprod(x, axis=0, exclusive=False, reverse=False, name=None)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

六、Segmentation

沿着第一维(x 轴)根据 segment_ids(list)分割好相应的数据后再进行操作

这里写图片描述

 
  1. # Computes the sum/mean/max/min/prod along segments of a tensor

  2. tf.segment_sum(data, segment_ids, name=None)

  3. # Eg:

  4. m = tf.constant([5,1,7,2,3,4,1,3])

  5. s_id = [0,0,0,1,2,2,3,3]

  6. s.run(tf.segment_sum(m, segment_ids=s_id))

  7. >array([13, 2, 7, 4], dtype=int32)

  8.  
  9. tf.segment_mean(data, segment_ids, name=None)

  10. tf.segment_max(data, segment_ids, name=None)

  11. tf.segment_min(data, segment_ids, name=None)

  12. tf.segment_prod(data, segment_ids, name=None)

  13.  
  14.  
  15. # 其它

  16. tf.unsorted_segment_sum

  17. tf.sparse_segment_sum

  18. tf.sparse_segment_mean

  19. tf.sparse_segment_sqrt_n

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

七、 序列比较与索引提取

 
  1. # 比较两个 list 或者 string 的不同,并返回不同的值和索引

  2. tf.setdiff1d(x, y, index_dtype=tf.int32, name=None)

  3.  
  4.  
  5. # 返回 x 中的唯一值所组成的tensor 和原 tensor 中元素在现 tensor 中的索引

  6. tf.unique(x, out_idx=None, name=None)

  7.  
  8.  
  9. # x if condition else y, condition 为 bool 类型的,可用tf.equal()等来表示

  10. # x 和 y 的形状和数据类型必须一致

  11. tf.where(condition, x=None, y=None, name=None)

  12.  
  13.  
  14. # 返回沿着坐标轴方向的最大/最小值的索引

  15. tf.argmax(input, axis=None, name=None, output_type=tf.int64)

  16. tf.argmin(input, axis=None, name=None, output_type=tf.int64)

  17.  
  18.  
  19. # x 的值当作 y 的索引,range(len(x)) 索引当作 y 的值

  20. # y[x[i]] = i for i in [0, 1, ..., len(x) - 1]

  21. tf.invert_permutation(x, name=None)

  22.  
  23.  
  24. # 其它

  25. tf.edit_distanc

你可能感兴趣的:(机器学习)