tensorflow编程: Math

Arithmetic Operators

tf.add、tf.subtract、tf.multiply、tf.scalar_mul、tf.div、tf.divide、tf.truediv、tf.floordiv、tf.realdiv、tf.truncatediv、tf.floor_div、tf.truncatemod、tf.floormod、tf.mod、tf.cross

# coding=utf-8

import tensorflow as tf

x = tf.constant([[10, 20]], dtype=tf.float32)
y = tf.constant([[3, 4]], dtype=tf.float32)

with tf.Session() as sess:
    # 对应元素 相加
    print '\ntf.add(x, y) : ', sess.run(tf.add(x, y))
    # 对应元素 相减
    print '\ntf.subtract(x, y) : ', sess.run(tf.subtract(x, y))
    # 对应元素 相乘
    print '\ntf.multiply(x, y) : ', sess.run(tf.multiply(x, y))
    # 所有元素 等比例放大
    print '\ntf.scalar_mul(9.0, x) : ', sess.run(tf.scalar_mul(9.0, x))
    # 对应元素 相除
    print '\ntf.div(x, y) : ', sess.run(tf.div(x, y))
    # 对应元素 相除
    print '\ntf.divide(x, y) : ', sess.run(tf.divide(x, y))
    # 对应元素 相除
    print '\ntf.truediv(x, y) : ', sess.run(tf.truediv(x, y))
    # 对应元素 地板除
    print '\ntf.floordiv(x, y) : ', sess.run(tf.floordiv(x, y))
    # 对应元素 截断除 取余
    print '\ntf.truncatemod(x, y) : ', sess.run(tf.truncatemod(x, y))
    # 对应元素 地板除 取余
    print '\ntf.floormod(x, y) : ', sess.run(tf.floormod(x, y))
    # 对应元素 相除 取余
    print '\ntf.mod(x, y) : ', sess.run(tf.mod(x, y))
    # 两组 3元素向量的tensor 交叉乘
    print '\ntf.cross([[10, 20, 30]], [[1, 2, 3]]) : ', sess.run(tf.cross([[10, 20, 30]], [[1, 2, 1]]))
tf.add(x, y) :  [[ 13.  24.]]

tf.subtract(x, y) :  [[  7.  16.]]

tf.multiply(x, y) :  [[ 30.  80.]]

tf.scalar_mul(9.0, x) :  [[  90.  180.]]

tf.div(x, y) :  [[ 3.33333325  5.        ]]

tf.divide(x, y) :  [[ 3.33333325  5.        ]]

tf.truediv(x, y) :  [[ 3.33333325  5.        ]]

tf.floordiv(x, y) :  [[ 3.  5.]]

tf.truncatemod(x, y) :  [[ 1.  0.]]

tf.floormod(x, y) :  [[ 1.  0.]]

tf.mod(x, y) :  [[ 1.  0.]]

tf.cross([[10, 20, 30]], [[1, 2, 3]]) :  [[-40  20   0]]

Basic Math Functions

tf.add_n、tf.abs、tf.negative、tf.sign、tf.reciprocal、tf.square、tf.round、tf.sqrt、tf.rsqrt、tf.pow、tf.exp、tf.expm1、tf.log、tf.log1p、tf.ceil、tf.floor、tf.maximum、tf.minimum、tf.cos、tf.sin、tf.lbeta、tf.tan、tf.acos、tf.asin、tf.atan、tf.cosh、tf.sinh、tf.asinh、tf.acosh、tf.atanh、tf.lgamma、tf.digamma、tf.erf、tf.erfc、tf.squared_difference、tf.rint

# coding=utf-8

import tensorflow as tf


x = tf.constant([[-1.5, 0, 2]], dtype=tf.float32)
y = tf.constant([[2, 0, 1]], dtype=tf.float32)

with tf.Session() as sess:
    # 对应元素 相加
    print '\ntf.add_n([x, y]) : ', sess.run(tf.add_n([x, y]))
    # 求 绝对值
    print '\ntf.abs(x) : ', sess.run(tf.abs(x))
    # 求 相反数
    print '\ntf.negative(x) : ', sess.run(tf.negative(x))
    # 求 符号
    print '\ntf.sign(x) : ', sess.run(tf.sign(x))
    # 求 倒数
    print '\ntf.reciprocal(x) : ', sess.run(tf.reciprocal(x))
    # 求 平方
    print '\ntf.square(x) : ', sess.run(tf.square(x))
    # 求 各元素各自距离最近的整数;若在中间,则取偶数值
    print '\ntf.round(x) : ', sess.run(tf.round(x))
    # 求 平方根
    print '\ntf.sqrt(x) : ', sess.run(tf.sqrt(x))
    # 求 平方根的倒数
    print '\ntf.rsqrt(x) : ', sess.run(tf.rsqrt(x))
    # 求 x各元素的y各元素次方
    print '\ntf.pow(x) : ', sess.run(tf.pow(x, y))
    # 求 自然数指数,即e^x
    print '\ntf.exp(x) : ', sess.run(tf.exp(x))
    # 求 自然指数减1,即e^x-1
    print '\ntf.expm1(x) : ', sess.run(tf.expm1(x))
    # 求 自然对数
    print '\ntf.log(x) : ', sess.run(tf.log(x))
    # 求 加1后的自然对数
    print '\ntf.log1p(x) : ', sess.run(tf.log1p(x))
    # 求 天花板整数
    print '\ntf.ceil(x) : ', sess.run(tf.ceil(x))
    # 求 地板整数
    print '\ntf.floor(x) : ', sess.run(tf.floor(x))
    # 求 各对应位置 上的 最大值
    print '\ntf.maximum(x) : ', sess.run(tf.maximum(x, y))
    # 求 各对应位置 上的 最小值
    print '\ntf.minimum(x) : ', sess.run(tf.minimum(x, y))
    # 求 cos(x)
    print '\ntf.cos(x) : ', sess.run(tf.cos(x))
    # 求 sin(x)
    print '\ntf.sin(x) : ', sess.run(tf.sin(x))
    # 求 ln(|Beta(x)|), 并以最末尺度进行归纳。
    print '\ntf.lbeta(x) : ', sess.run(tf.lbeta(x))
    # 求 tan(x)
    print '\ntf.tan(x) : ', sess.run(tf.tan(x))
    # 求 acos(x)
    print '\ntf.acos(x) : ', sess.run(tf.acos(x))
    # 求 asin(x)
    print '\ntf.asin(x) : ', sess.run(tf.asin(x))
    # 求 atan(x)
    print '\ntf.atan(x) : ', sess.run(tf.atan(x))
    # 求 cosh(x)
    print '\ntf.cosh(x) : ', sess.run(tf.cosh(x))
    # 求 sinh(x)
    print '\ntf.sinh(x) : ', sess.run(tf.sinh(x))
    # 求 asinh(x)
    print '\ntf.asinh(x) : ', sess.run(tf.asinh(x))
    # 求 acosh(x)
    print '\ntf.acosh(x) : ', sess.run(tf.acosh(x))
    # 求 atanh(x)
    print '\ntf.atanh(x) : ', sess.run(tf.atanh(x))
    # 求 ln(gamma(x))
    print '\ntf.lgamma(x) : ', sess.run(tf.lgamma(x))
    # 求 lgamma的导数,即gamma‘/gamma
    print '\ntf.digamma(x) : ', sess.run(tf.digamma(x))
    # 求 高斯误差
    print '\ntf.erf(x) : ', sess.run(tf.erf(x))
    # 求 高斯互补误差
    print '\ntf.erfc(x) : ', sess.run(tf.erfc(x))
    # 求 (x-y)(x-y)
    print '\ntf.squared_difference(x) : ', sess.run(tf.squared_difference(x, y))
    # 求 离x最近的整数,若为中间值,取偶数值。
    print '\ntf.rint(x) : ', sess.run(tf.rint(x))
tf.add_n([x, y]) :  [[ 0.5  0.   3. ]]

tf.abs(x) :  [[ 1.5  0.   2. ]]

tf.negative(x) :  [[ 1.5 -0.  -2. ]]

tf.sign(x) :  [[-1.  0.  1.]]

tf.reciprocal(x) :  [[-0.66666669         inf  0.5       ]]

tf.square(x) :  [[ 2.25  0.    4.  ]]

tf.round(x) :  [[-2.  0.  2.]]

tf.sqrt(x) :  [[        nan  0.          1.41421354]]

tf.rsqrt(x) :  [[        nan         inf  0.70710677]]

tf.pow(x) :  [[ 2.25  1.    2.  ]]

tf.exp(x) :  [[ 0.22313017  1.          7.38905621]]

tf.expm1(x) :  [[-0.77686983  0.          6.38905621]]

tf.log(x) :  [[        nan        -inf  0.69314718]]

tf.log1p(x) :  [[        nan  0.          1.09861231]]

tf.ceil(x) :  [[-1.  0.  2.]]

tf.floor(x) :  [[-2.  0.  2.]]

tf.maximum(x) :  [[ 2.  0.  2.]]

tf.minimum(x) :  [[-1.5  0.   1. ]]

tf.cos(x) :  [[ 0.0707372   1.         -0.41614684]]

tf.sin(x) :  [[-0.997495    0.          0.90929741]]

tf.lbeta(x) :  [ inf]

tf.tan(x) :  [[-14.1014204    0.          -2.18503976]]

tf.acos(x) :  [[        nan  1.57079637         nan]]

tf.asin(x) :  [[ nan   0.  nan]]

tf.atan(x) :  [[-0.98279375  0.          1.10714877]]

tf.cosh(x) :  [[ 2.3524096   1.          3.76219583]]

tf.sinh(x) :  [[-2.12927938  0.          3.62686038]]

tf.asinh(x) :  [[-1.19476318  0.          1.44363546]]

tf.acosh(x) :  [[        nan         nan  1.31695795]]

tf.atanh(x) :  [[ nan   0.  nan]]

tf.lgamma(x) :  [[ 0.86004704         inf  0.        ]]

tf.digamma(x) :  [[ 0.70315683         inf  0.42278421]]

tf.erf(x) :  [[-0.96610516  0.          0.99532229]]

tf.erfc(x) :  [[ 1.9661051   1.          0.00467773]]

tf.squared_difference(x) :  [[ 12.25   0.     1.  ]]

tf.rint(x) :  [[-2.  0.  2.]]

Matrix Math Functions

tf.diag、tf.diag_part、tf.trace、tf.transpose(a, perm=None)、tf.eye、tf.matrix_diag、tf.matrix_diag_part、tf.matrix_band_part、tf.matrix_set_diag、tf.matrix_transpose、tf.matmul、tf.norm、tf.matrix_determinant、tf.matrix_inverse、tf.cholesky、tf.matrix_triangular_solve、tf.matrix_solve_ls、tf.qr、tf.self_adjoint_eig、tf.self_adjoint_eigvals、tf.svd

# coding=utf-8
import tensorflow as tf

x = tf.constant([[1,5,0],[0,2,0],[0,0,3]])
x_f = tf.cast(x, tf.float32)
y = tf.constant([10, 20, 30])

with tf.Session() as sess:
    # 返回 对角矩阵
    print '\ntf.diag(y) : \n', sess.run(tf.diag(y))
    # 返回 对角阵的 对角元素
    print '\ntf.diag_part(x) : \n', sess.run(tf.diag_part(x))
    # 返回 矩阵的 迹
    print '\ntf.trace(x) : \n', sess.run(tf.trace(x))
    # 返回 矩阵的 转置。 perm参数项: x的尺寸排列顺序,默认为None。
    print '\ntf.transpose(x) : \n', sess.run(tf.transpose(x))
    # 返回 单位矩阵
    print '\ntf.eye(3) : \n', sess.run(tf.eye(3))
    # 根据对角值 返回 一批对角矩阵
    print '\ntf.matrix_diag([[1,2,3],[4,5,6]]) : \n', sess.run(tf.matrix_diag([[1,2,3],[4,5,6]]))
    # 返回 批对角阵 的 对角元素
    print '\ntf.matrix_diag_part([x, x]) : \n', sess.run(tf.matrix_diag_part([x, x]))
    # 返回矩阵的 上三角矩阵
    print '\ntf.matrix_band_part(x, 0, -1) : \n', sess.run(tf.matrix_band_part(x, 0, -1))
    # 返回矩阵的 下三角矩阵
    print '\ntf.matrix_band_part(x, -1, 0) : \n', sess.run(tf.matrix_band_part(x, -1, 0))
    # 返回矩阵的 对角矩阵
    print '\ntf.matrix_band_part(x, 0, 0) : \n', sess.run(tf.matrix_band_part(x, 0, 0))
    # 将输入矩阵的对角元素置换为对角元素
    print '\ntf.matrix_set_diag(x, y) : \n', sess.run(tf.matrix_set_diag(x, y))
    # 返回 转置矩阵
    print '\ntf.matrix_transpose(x) : \n', sess.run(tf.matrix_transpose(x))
    # 矩阵乘法
    print '\ntf.matmul(x, x) : \n', sess.run(tf.matmul(x, x))
    # 求 范数
    print '\ntf.norm(x_f) : \n', sess.run(tf.norm(x_f))
    # 求 行列式
    print '\ntf.matrix_determinant(x_f) : \n', sess.run(tf.matrix_determinant(x_f))
    # 求 逆矩阵
    print '\ntf.matrix_inverse(x_f) : \n', sess.run(tf.matrix_inverse(x_f))
    # 进行 cholesky分解
    print '\ntf.cholesky(tf.constant([[2, -1], [-1, 5]], dtype=tf.float32))) : \n', sess.run(tf.cholesky(tf.constant([[2, -1], [-1, 5]], dtype=tf.float32)))
    # 对矩阵进行 qr分解
    print '\ntf.qr(x_f) : \n', sess.run(tf.qr(x_f))
    # 求取 特征值 和 特征向量
    print '\ntf.tf.self_adjoint_eig(x_f) : \n', sess.run(tf.self_adjoint_eig(x_f))
    # 计算 多个矩阵 的 特征值
    print '\ntf.self_adjoint_eigvals([x_f, x_f]) : \n', sess.run(tf.self_adjoint_eigvals([x_f, x_f]))
    # 进行 奇异值分解
    print '\ntf.svd(x_f) : \n', sess.run(tf.svd(x_f))
tf.diag(y) : 
[[10  0  0]
 [ 0 20  0]
 [ 0  0 30]]

tf.diag_part(x) : 
[1 2 3]

tf.trace(x) : 
6

tf.transpose(x) : 
[[1 0 0]
 [5 2 0]
 [0 0 3]]

tf.eye(3) : 
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

tf.matrix_diag([[1,2,3],[4,5,6]]) : 
[[[1 0 0]
  [0 2 0]
  [0 0 3]]

 [[4 0 0]
  [0 5 0]
  [0 0 6]]]

tf.matrix_diag_part([x, x]) : 
[[1 2 3]
 [1 2 3]]

tf.matrix_band_part(x, 0, -1) : 
[[1 5 0]
 [0 2 0]
 [0 0 3]]

tf.matrix_band_part(x, -1, 0) : 
[[1 0 0]
 [0 2 0]
 [0 0 3]]

tf.matrix_band_part(x, 0, 0) : 
[[1 0 0]
 [0 2 0]
 [0 0 3]]

tf.matrix_set_diag(x, y) : 
[[10  5  0]
 [ 0 20  0]
 [ 0  0 30]]

tf.matrix_transpose(x) : 
[[1 0 0]
 [5 2 0]
 [0 0 3]]

tf.matmul(x, x) : 
[[ 1 15  0]
 [ 0  4  0]
 [ 0  0  9]]

tf.norm(x_f) : 
6.245

tf.matrix_determinant(x_f) : 
6.0

tf.matrix_inverse(x_f) : 
[[ 1.         -2.5         0.        ]
 [ 0.          0.5         0.        ]
 [ 0.          0.          0.33333334]]

tf.cholesky(tf.constant([[2, -1], [-1, 5]], dtype=tf.float32))) : 
[[ 1.41421354  0.        ]
 [-0.70710677  2.12132025]]

tf.qr(x_f) : 
Qr(q=array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]], dtype=float32), r=array([[ 1.,  5.,  0.],
       [ 0.,  2.,  0.],
       [ 0.,  0.,  3.]], dtype=float32))

tf.tf.self_adjoint_eig(x_f) : 
(array([ 1.,  2.,  3.], dtype=float32), array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]], dtype=float32))

tf.self_adjoint_eigvals([x_f, x_f]) : 
[[ 1.  2.  3.]
 [ 1.  2.  3.]]

tf.svd(x_f) : 
(array([ 5.46498585,  3.        ,  0.36596629], dtype=float32), array([[ 0.93272191,  0.        ,  0.36059672],
       [ 0.36059672,  0.        , -0.93272191],
       [ 0.        ,  1.        ,  0.        ]], dtype=float32), array([[ 0.17067236,  0.        ,  0.9853279 ],
       [ 0.9853279 ,  0.        , -0.17067236],
       [ 0.        ,  1.        ,  0.        ]], dtype=float32))

Tensor Math Function

tf.tensordot

# coding=utf-8
import tensorflow as tf

x = tf.constant([[1,5,0],[0,2,0],[0,0,3]])
x_f = tf.cast(x, tf.float32)
y = tf.constant([10, 20, 30])

with tf.Session() as sess:
    # 同numpy.tensordot,根据axis计算点乘。输入:axes=1或axes=[[1],[0]],即为矩阵乘。
    print '\ntf.tensordot(x, x, axes=1) : \n', sess.run(tf.tensordot(x, x, axes=1))
tf.tensordot(x, x, axes=1) : 
[[ 1 15  0]
 [ 0  4  0]
 [ 0  0  9]]

Complex Number Functions

tf.complex、tf.conj、tf.imag、tf.real

# coding=utf-8
import tensorflow as tf

x = tf.constant([[1,5,0],[0,2,0],[0,0,3]])
x_f = tf.cast(x, tf.float32)
y = tf.constant([10, 20, 30])

with tf.Session() as sess:
    # 将实数 转化为 复数
    print '\ntf.complex(x_f, x_f) : \n', sess.run(tf.complex(x_f, x_f))
    # 返回 x的 共轭复数
    print '\ntf.conj(tf.constant([1+2j, 2-3j])) : \n', sess.run(tf.conj(tf.constant([1+2j,2-3j])))
    # 返回 虚数部分
    print '\ntf.imag(tf.constant([1+2j,2-3j])): \n', sess.run(tf.imag(tf.constant([1+2j,2-3j])))
    # 返回 实数部分
    print '\ntf.real(tf.constant([1+2j,2-3j])): \n', sess.run(tf.real(tf.constant([1+2j,2-3j])))
tf.complex(x_f, x_f) : 
[[ 1.+1.j  5.+5.j  0.+0.j]
 [ 0.+0.j  2.+2.j  0.+0.j]
 [ 0.+0.j  0.+0.j  3.+3.j]]

tf.conj(tf.constant([1+2j, 2-3j])) : 
[ 1.-2.j  2.+3.j]

tf.imag(tf.constant([1+2j,2-3j])): 
[ 2. -3.]

tf.real(tf.constant([1+2j,2-3j])): 
[ 1.  2.]

Reduction

tf.reduce_sum、tf.reduce_prod、tf.reduce_min、tf.reduce_max、tf.reduce_mean、tf.reduce_all、tf.reduce_any、tf.reduce_logsumexp、tf.count_nonzero、tf.accumulate_n

# coding=utf-8
import tensorflow as tf

x = tf.constant(range(1, 10), shape=[3, 3])
x_bool =  tf.constant([[True,True,False,False],[True,False,False,True]])

with tf.Session() as sess:
    # 沿着维度axis 计算 元素和 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_sum(x) : \n', sess.run(tf.reduce_sum(x))
    print '\ntf.reduce_sum(x, axis=0) : \n', sess.run(tf.reduce_sum(x, axis=0))
    print '\ntf.reduce_sum(x, axis=1) : \n', sess.run(tf.reduce_sum(x, axis=1))
    # 沿着维度axis 计算 元素积 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_prod(x) : \n', sess.run(tf.reduce_prod(x))
    print '\ntf.reduce_prod(x, axis=0) : \n', sess.run(tf.reduce_prod(x, axis=0))
    print '\ntf.reduce_prod(x, axis=1) : \n', sess.run(tf.reduce_prod(x, axis=1))
    # 沿着维度axis 计算 最小值 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_min(x) : \n', sess.run(tf.reduce_min(x))
    print '\ntf.reduce_min(x, axis=0) : \n', sess.run(tf.reduce_min(x, axis=0))
    print '\ntf.reduce_min(x, axis=1) : \n', sess.run(tf.reduce_min(x, axis=1))
    # 沿着维度axis 计算 最大值 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_max(x) : \n', sess.run(tf.reduce_max(x))
    print '\ntf.reduce_max(x, axis=0) : \n', sess.run(tf.reduce_max(x, axis=0))
    print '\ntf.reduce_max(x, axis=1) : \n', sess.run(tf.reduce_max(x, axis=1))
    # 沿着维度axis 计算 均值 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_mean(x) : \n', sess.run(tf.reduce_mean(x))
    print '\ntf.reduce_mean(x, axis=0) : \n', sess.run(tf.reduce_mean(x, axis=0))
    print '\ntf.reduce_mean(x, axis=1) : \n', sess.run(tf.reduce_mean(x, axis=1))
    # 沿着维度axis 计算 逻辑与 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_all(x_bool) : \n', sess.run(tf.reduce_all(x_bool))
    print '\ntf.reduce_all(x_bool, ax_boolis=0) : \n', sess.run(tf.reduce_all(x_bool, axis=0))
    print '\ntf.reduce_all(x_bool, ax_boolis=1) : \n', sess.run(tf.reduce_all(x_bool, axis=1))
    # 沿着维度axis 计算 逻辑或 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_any(x_bool) : \n', sess.run(tf.reduce_any(x_bool))
    print '\ntf.reduce_any(x_bool, ax_boolis=0) : \n', sess.run(tf.reduce_any(x_bool, axis=0))
    print '\ntf.reduce_any(x_bool, ax_boolis=1) : \n', sess.run(tf.reduce_any(x_bool, axis=1))
    # 沿着维度axis 计算 log(sum(exp())) 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    print '\ntf.reduce_min(x) : \n', sess.run(tf.reduce_min(x))
    print '\ntf.reduce_min(x, axis=0) : \n', sess.run(tf.reduce_min(x, axis=0))
    print '\ntf.reduce_min(x, axis=1) : \n', sess.run(tf.reduce_min(x, axis=1))
    # 沿着维度axis 计算 非0个数 。axis=None 时沿所有维度求和;keep_dims=True 时阶数保持不变。
    a = tf.constant([[0,0,0], [0,1,2]])
    print '\ntf.count_nonzero(a) : \n', sess.run(tf.count_nonzero(a))
    print '\ntf.count_nonzero(a, axis=0) : \n', sess.run(tf.count_nonzero(a, axis=0))
    print '\ntf.count_nonzero(a, axis=1) : \n', sess.run(tf.count_nonzero(a, axis=1))
    # 相对位置 元素相加
    print '\ntf.accumulate_n([x, x]) : \n', sess.run(tf.accumulate_n([x, x]))
tf.reduce_sum(x) : 
45

tf.reduce_sum(x, axis=0) : 
[12 15 18]

tf.reduce_sum(x, axis=1) : 
[ 6 15 24]

tf.reduce_prod(x) : 
362880

tf.reduce_prod(x, axis=0) : 
[ 28  80 162]

tf.reduce_prod(x, axis=1) : 
[  6 120 504]

tf.reduce_min(x) : 
1

tf.reduce_min(x, axis=0) : 
[1 2 3]

tf.reduce_min(x, axis=1) : 
[1 4 7]

tf.reduce_max(x) : 
9

tf.reduce_max(x, axis=0) : 
[7 8 9]

tf.reduce_max(x, axis=1) : 
[3 6 9]

tf.reduce_mean(x) : 
5

tf.reduce_mean(x, axis=0) : 
[4 5 6]

tf.reduce_mean(x, axis=1) : 
[2 5 8]

tf.reduce_all(x_bool) : 
False

tf.reduce_all(x_bool, ax_boolis=0) : 
[ True False False False]

tf.reduce_all(x_bool, ax_boolis=1) : 
[False False]

tf.reduce_any(x_bool) : 
True

tf.reduce_any(x_bool, ax_boolis=0) : 
[ True  True False  True]

tf.reduce_any(x_bool, ax_boolis=1) : 
[ True  True]

tf.reduce_min(x) : 
1

tf.reduce_min(x, axis=0) : 
[1 2 3]

tf.reduce_min(x, axis=1) : 
[1 4 7]

tf.count_nonzero(a) : 
2

tf.count_nonzero(a, axis=0) : 
[0 1 1]

tf.count_nonzero(a, axis=1) : 
[0 2]

tf.accumulate_n([x, x]) : 
[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]

Scan

tf.cumsum、tf.cumprod

# coding=utf-8
import tensorflow as tf

x = tf.constant(range(1, 10), shape=[3, 3])
x_bool =  tf.constant([[True,True,False,False],[True,False,False,True]])

with tf.Session() as sess:
    # 沿着维度axis 进行 累加 。axis=None 时沿所有维度累加。
    print '\ntf.cumsum(x) : \n', sess.run(tf.cumsum(x))
    print '\ntf.cumsum(x, axis=0) : \n', sess.run(tf.cumsum(x, axis=0))
    print '\ntf.cumsum(x, axis=1) : \n', sess.run(tf.cumsum(x, axis=1))
    # 沿着维度axis 进行 累积 。axis=None 时沿所有维度累加。
    print '\ntf.cumprod(x) : \n', sess.run(tf.cumprod(x))
    print '\ntf.cumprod(x, axis=0) : \n', sess.run(tf.cumprod(x, axis=0))
    print '\ntf.cumprod(x, axis=1) : \n', sess.run(tf.cumprod(x, axis=1))
tf.cumsum(x) : 
[[ 1  2  3]
 [ 5  7  9]
 [12 15 18]]

tf.cumsum(x, axis=0) : 
[[ 1  2  3]
 [ 5  7  9]
 [12 15 18]]

tf.cumsum(x, axis=1) : 
[[ 1  3  6]
 [ 4  9 15]
 [ 7 15 24]]

tf.cumprod(x) : 
[[  1   2   3]
 [  4  10  18]
 [ 28  80 162]]

tf.cumprod(x, axis=0) : 
[[  1   2   3]
 [  4  10  18]
 [ 28  80 162]]

tf.cumprod(x, axis=1) : 
[[  1   2   6]
 [  4  20 120]
 [  7  56 504]]

Segmentation


Sequence Comparison and Indexing

tf.argmin、tf.argmax

# coding=utf-8
import tensorflow as tf

x = tf.constant(range(1, 10), shape=[3, 3])
x_bool =  tf.constant([[True,True,False,False],[True,False,False,True]])

with tf.Session() as sess:
    # 返回 沿axis维度 最小值 的 下标。axis=None 时 返回 全局 最小值 的下标。
    print '\ntf.argmin(x) : \n', sess.run(tf.argmin(x))
    print '\ntf.argmin(x, axis=0) : \n', sess.run(tf.argmin(x, axis=0))
    print '\ntf.argmin(x, axis=1) : \n', sess.run(tf.argmin(x, axis=1))
    # 返回 沿axis维度 最大值 的 下标。axis=None 时 返回 全局 最大值 的下标。
    print '\ntf.argmax(x) : \n', sess.run(tf.argmax(x))
    print '\ntf.argmax(x, axis=0) : \n', sess.run(tf.argmax(x, axis=0))
    print '\ntf.argmax(x, axis=1) : \n', sess.run(tf.argmax(x, axis=1))
tf.argmin(x) : 
[0 0 0]

tf.argmin(x, axis=0) : 
[0 0 0]

tf.argmin(x, axis=1) : 
[0 0 0]

tf.argmax(x) : 
[2 2 2]

tf.argmax(x, axis=0) : 
[2 2 2]

tf.argmax(x, axis=1) : 
[2 2 2]


你可能感兴趣的:(TensorFlow,TensorFlow,框架)