tensorflow接口研读math_ops(三)

math_ops函数使用,本篇为Reduction函数,Scan,Segmention,比较序列和ID。

1.85 tf.reduce_sum(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算元素和,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[1,2,3],[4,5,6]])
z=tf.reduce_sum(a)
z2=tf.reduce_sum(a,0)
z3=tf.reduce_sum(a,1)

z==>21
z2==>[5 7 9]
z3==>[6 15]
1.86 tf.reduce_prod(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算元素积,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[1,2,3],[4,5,6]])
z=tf.reduce_prod(a)
z2=tf.reduce_prod(a,0)
z3=tf.reduce_prod(a,1)

z==>720
z2==>[4 10 18]
z3==>[6 120]
1.87 tf.reduce_min(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算最小值,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[1,2,3],[4,5,6]])
z=tf.reduce_min(a)
z2=tf.reduce_min(a,0)
z3=tf.reduce_min(a,1)

z==>1
z2==>[1 2 3]
z3==>[1 4]
1.88 tf.reduce_max(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算最大值,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[1,2,3],[4,5,6]])
z=tf.reduce_max(a)
z2=tf.reduce_max(a,0)
z3=tf.reduce_max(a,1)

z==>6
z2==>[4 5 6]
z3==>[3 6]
1.89 tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算平均值,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[1,2,3],[4,5,6]],dtype=tf.float64)
z=tf.reduce_mean(a)
z2=tf.reduce_mean(a,0)
z3=tf.reduce_mean(a,1)

z==>3.5
z2==>[2.5 3.5 4.5]
z3==>[2. 5.]
1.90 tf.reduce_all(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算逻辑与,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[True,True,False,False],[True,False,False,True]])
z=tf.reduce_all(a)
z2=tf.reduce_all(a,0)
z3=tf.reduce_all(a,1)

z==>False
z2==>[True False False False]
z3==>[False False]
1.91 tf.reduce_any(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算逻辑或,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[True,True,False,False],[True,False,False,True]])
z=tf.reduce_any(a)
z2=tf.reduce_any(a,0)
z3=tf.reduce_any(a,1)

z==>True
z2==>[True True False True]
z3==>[True True]
1.92 tf.reduce_logsumexp(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
功能:沿着维度axis计算log(sum(exp())),除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[0,0,0],[0,0,0]],dtype=tf.float64)
z=tf.reduce_logsumexp(a)
z2=tf.reduce_logsumexp(a,0)
z3=tf.reduce_logsumexp(a,1)

z==>1.79175946923#log(6)
z2==>[0.69314718 0.69314718 0.69314718]#[log(2) log(2) log(2)]
z3==>[1.09861229 1.09861229]#[log(3) log(3)]

1.93 tf.count_nonzero(input_tensor, axis=None, keep_dims=False, dtype=tf.int64, name=None, reduction_indices=None)
功能:沿着维度axis计算非0个数,除非keep_dims=True,输出tensor保持维度为1。
输入:axis:默认为None,即沿所有维度求和。
例:
a = tf.constant([[0,0,0],[0,1,2]],dtype=tf.float64)
z=tf.count_nonzero(a)
z2=tf.count_nonzero(a,0)
z3=tf.count_nonzero(a,1)

z==>2
z2==>[0 1 1]
z3==>[0 2]
1.94 tf.accumulate_n(inputs, shape=None, tensor_dtype=None, name=None)
功能:对应位置元素相加。如果输入是训练变量,不要使用,应使用tf.add_n。
输入:shape,tensor_dtype:类型检查
例:
a = tf.constant([[1,2],[3,4]])
b = tf.constant([[5,6],[7,8]])
z=tf.accumulate_n([a,b])

z==>[[6 8]
     [10 12]]
1.95 tf.einsum(equation, *inputs)
功能:通过equation进行矩阵乘法。
输入:equation:乘法算法定义。
# 矩阵乘
>>> einsum('ij,jk->ik', m0, m1)  # output[i,k] = sum_j m0[i,j] * m1[j, k]
# 点乘
>>> einsum('i,i->', u, v)  # output = sum_i u[i]*v[i]
# 向量乘
>>> einsum('i,j->ij', u, v)  # output[i,j] = u[i]*v[j]
# 转置
>>> einsum('ij->ji', m)  # output[j,i] = m[i,j]
# 批量矩阵乘
>>> einsum('aij,ajk->aik', s, t)  # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]
例:
a = tf.constant([[1,2],[3,4]])
b = tf.constant([[5,6],[7,8]])
z=tf.einsum('ij,jk->ik',a,b)

z==>[[19 22]
     [43 50]]
1.96 tf.cumsum(x, axis=0, exclusive=False, reverse=False, name=None)
功能:沿着维度axis进行累加。
输入:axis:默认为0
    reverse:默认为False,若为True,累加反向相反。
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.cumsum(a)
z2=tf.cumsum(a,axis=1)
z3=tf.cumsum(a,reverse=True)

z==>[[1 2 3]
     [5 7 9]
     [12 15 18]]
z2==>[[1 3 6]
      [4 9 15]
      [7 15 24]]
z3==>[[12 15 18]
      [11 13 15]
      [7 8 9]]
1.97 tf.cumprod(x, axis=0, exclusive=False, reverse=False, name=None)
功能:沿着维度axis进行累积。
输入:axis:默认为0
    reverse:默认为False,若为True,累加反向相反。
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.cumprod(a)
z2=tf.cumprod(a,axis=1)
z3=tf.cumprod(a,reverse=True)

z==>[[ 1  2   3]
     [ 5 10  18]
     [28 80 162]]
z2==>[[  1   2   6]
      [  4  20 120]
      [  7  56 504]]
z3==>[[ 28  80 162]
      [ 28  40  54]
      [  7   8   9]]
1.98 tf.segment_sum(data, segment_ids, name=None)
功能:tensor进行拆分后求和。
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
                必须从0开始,且以1进行递增。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.segment_sum(a,[0,0,1])

z==>[[5 7 9]
     [7 8 9]]
1.99 tf.segment_prod(data, segment_ids, name=None)
功能:tensor进行拆分后求积。
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
                必须从0开始,且以1进行递增。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.segment_prod(a,[0,0,1])

z==>[[4 10 18]
     [7  8  9]]
1.100 tf.segment_min(data, segment_ids, name=None)
功能:tensor进行拆分后求最小值。
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
                必须从0开始,且以1进行递增。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.segment_min(a,[0,0,1])

z==>[[1 2 3]
     [7 8 9]]
1.101 tf.segment_max(data, segment_ids, name=None)
功能:tensor进行拆分后求最大值。
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
                必须从0开始,且以1进行递增。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.segment_max(a,[0,0,1])

z==>[[4 5 6]
     [7 8 9]]
1.102 tf.segment_mean(data, segment_ids, name=None)
功能:tensor进行拆分后求平均值。
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
                必须从0开始,且以1进行递增。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.segment_mean(a,[0,0,1])

z==>[[2 3 4]
     [7 8 9]]
1.103 tf.unsorted_segment_sum(data, segment_ids, num_segments, name=None)
功能:tensor进行拆分后求和。不同于sugementsum,segmentids不用按照顺序排列
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
    num_segments:分类总数,若多余ids匹配的数目,则置0。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.unsorted_segment_sum(a,[0,1,0],2)
z2=tf.unsorted_segment_sum(a,[0,0,0],2)

z==>[[8 10 12]
     [4  5  6]]
z2==>[[12 15 18]
      [0  0  0]]
1.104 tf.unsorted_segment_max(data, segment_ids, num_segments, name=None)
功能:tensor进行拆分后求最大值。不同于sugementmax,segmentids不用按照顺序排列
输入:segment_ids:必须是整型,1维向量,向量数目与data第一维的数量一致。
    num_segments:分类总数,若多余ids匹配的数目,则置0。 
例:
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
z=tf.unsorted_segment_max(a,[0,1,0],2)
z2=tf.unsorted_segment_max(a,[0,0,0],2)

z==>[[8 10 12]
     [4  5  6]]
z2==>[[12 15 18]
      [0  0  0]]
1.105 tf.sparse_segment_sum(data, indices, segment_ids, name=None)
功能:tensor进行拆分后求和。和segment_sum类似,只是segment_ids的rank数可以小于‘data’第0维度数。
输入:indices:选择第0维度参与运算的编号。
例:
a = tf.constant([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
z=tf.sparse_segment_sum(a, tf.constant([0, 1]), tf.constant([0, 0]))
z2=tf.sparse_segment_sum(a, tf.constant([0, 1]), tf.constant([0, 1]))
z3=tf.sparse_segment_sum(a, tf.constant([0, 2]), tf.constant([0, 1]))
z4=tf.sparse_segment_sum(a, tf.constant([0, 1,2]), tf.constant([0, 0,1]))

z==>[[6 8 10 12]]
z2==>[[1 2 3 4]
      [5 6 7 8]]
z3==>[[1 2 3 4]
      [9 10 11 12]]
z4==>[[6 8 10 12]
      [9 10 11 12]]
1.106 tf.sparse_segment_mean(data, indices, segment_ids, name=None)
功能:tensor进行拆分后求平均值。和segment_mean类似,只是segment_ids的rank数可以小于‘data’第0维度数。
输入:indices:选择第0维度参与运算的编号。
例:
a = tf.constant([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
z=tf.sparse_segment_mean(a, tf.constant([0, 1]), tf.constant([0, 0]))
z2=tf.sparse_segment_mean(a, tf.constant([0, 1]), tf.constant([0, 1]))
z3=tf.sparse_segment_mean(a, tf.constant([0, 2]), tf.constant([0, 1]))
z4=tf.sparse_segment_mean(a, tf.constant([0, 1,2]), tf.constant([0, 0,1]))

z==>[[3. 4. 5. 6.]]
z2==>[[1. 2. 3. 4.]
      [5. 6. 7. 8.]]
z3==>[[1. 2. 3. 4.]
      [9. 10. 11. 12.]]
z4==>[[3. 4. 5. 6.]
      [9. 10. 11. 12.]]

1.107 tf.sparse_segment_sqrt_n(data, indices, segment_ids, name=None)
功能:tensor进行拆分后求和再除以N的平方根。N为reduce segment数量。
     和segment_mean类似,只是segment_ids的rank数可以小于‘data’第0维度数。
输入:indices:选择第0维度参与运算的编号。
例:
a = tf.constant([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
z=tf.sparse_segment_sqrt_n(a, tf.constant([0, 1]), tf.constant([0, 0]))
z2=tf.sparse_segment_sqrt_n(a, tf.constant([0, 1]), tf.constant([0, 1]))
z3=tf.sparse_segment_sqrt_n(a, tf.constant([0, 2]), tf.constant([0, 1]))
z4=tf.sparse_segment_sqrt_n(a, tf.constant([0, 1,2]), tf.constant([0, 0,1]))

z==>[[4.24264069 5.65685424 7.07106781 8.48528137]]
z2==>[[1. 2. 3. 4.]
      [5. 6. 7. 8.]]
z3==>[[1. 2. 3. 4.]
      [9. 10. 11. 12.]]
z4==>[[4.24264069 5.65685424 7.07106781 8.48528137]
      [9. 10. 11. 12.]]
1.108 tf.argmin(input, axis=None, name=None, dimension=None)
功能:返回沿axis维度最小值的下标。
输入:
例:
a = tf.constant([[1,2,3,4], [5,6,7,8], [9,10,11,12]],tf.float64)
z1=tf.argmin(a,axis=0)
z2=tf.argmin(a,axis=1)

z1==>[0 0 0 0]
z2==>[0 0 0]
1.109 tf.argmax(input, axis=None, name=None, dimension=None)
功能:返回沿axis维度最大值的下标。
输入:
例:
a = tf.constant([[1,2,3,4], [5,6,7,8], [9,10,11,12]],tf.float64)
z1=tf.argmin(a,axis=0)
z2=tf.argmax(a,axis=1)

z1==>[2 2 2 2]
z2==>[3 3 3]
1.110 tf.setdiff1d(x, y, index_dtype=tf.int32, name=None)
功能:返回在x里不在y里的元素值和下标,
输入:
例:
a = tf.constant([1,2,3,4])
b=tf.constant([1,4])
out,idx=tf.setdiff1d(a,b)

out==>[2 3]
idx==>[1 2]
1.111 tf.where(condition, x=None, y=None, name=None)
功能:若x,y都为None,返回condition值为True的坐标;
    若x,y都不为None,返回condition值为True的坐标在x内的值,condition值为False的坐标在y内的值
输入:condition:bool类型的tensor;
例:
a=tf.constant([True,False,False,True])
x=tf.constant([1,2,3,4])
y=tf.constant([5,6,7,8])
z=tf.where(a)
z2=tf.where(a,x,y)

z==>[[0]
     [3]]
z2==>[ 1 6 7 4]
1.112 tf.unique(x, out_idx=None, name=None)
功能:罗列非重复元素及其编号。
输入:
例:
a = tf.constant([1,1,2,4,4,4,7,8,9,1])
y,idx=tf.unique(a)

y==>[1 2 4 7 8 9]
idx==>[0 0 1 2 2 2 3 4 5 0]
1.113 tf.edit_distance(hypothesis, truth, normalize=True, name='edit_distance')
功能:计算Levenshtein距离。
输入:hypothesis:'SparseTensor';
     truth:'SparseTensor'.
例:
hypothesis = tf.SparseTensor(
    [[0, 0, 0],
     [1, 0, 0]],
    ["a", "b"],
    (2, 1, 1))
truth = tf.SparseTensor(
    [[0, 1, 0],
     [1, 0, 0],
     [1, 0, 1],
     [1, 1, 0]],
    ["a", "b", "c", "a"],
    (2, 2, 2))
z=tf.edit_distance(hypothesis,truth)

z==>[[inf 1.]
     [0.5 1.]]
1.114 tf.invert_permutation(x, name=None)
功能:转换坐标与值。y(i)=x(i)的坐标   (for i in range (lens(x))。
输入:
例:
a=tf.constant([3,4,0,2,1])
z=tf.invert_permutation(a)

z==>[2 4 3 0 1]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 3,437评论 0 1
  • 1. tf函数 tensorflow 封装的工具类函数 | 操作组 | 操作 ||:-------------| ...
    南墙已破阅读 5,060评论 0 5
  • 新岁愿望:成为一个拍照好看的人,成为一个写字好看的人,成为一个弹琴好听的人。总之,要成为一个有趣好玩的生活家。
    素小竹阅读 474评论 0 0
  • 一个小娃娃, 刚来到我家, 张嘴就叫哇哇哇。 这个小娃娃, 转眼就长大, 整天乐得笑哈哈。 尽管生活不乏苦辣, 哪...
    颦颦黛玉阅读 300评论 0 0
  • 【法辩】论王老吉红罐案中无法分割的衍生权益 原创2015-06-24张楠法律博客就该系列案件而言,“王老吉”商标与...
    小好阅读 540评论 0 2