tensorflow模型操作常用函数总结:(四)

复数操作函数:

                                                                                          复数操作函数

                              函数                                                                   描述
tf.complex(real,image,name=None)

将两实数转换为复数形式。例如:

real = [2,25,3,25]

Imag = [4.75,5.75]

tf.complex(real,imag) ==> [[2.25 + 4.75j],[3.25 + 5.75j]]

tf.complex_abs(x,name=None)

计算复数的绝对值,即长度。例如:

x = [[-2.25 + 4.75j],[-3.25, + 5.75j]]

tf.complex_abs(x) ==> [5.25594902,6.60492229]

tf.conj(input,name=None)

计算共轭复数

tf.image(input,name=None)

tf.real(input,name=None)

提取复数的虚部和实部
tf.fft(input,name=None)计算一堆的离散傅里叶变换,输入数据类型为complex64

规约计算 :

     规约计算的操作都会有降维的功能,在所有reduce_xxx系列操作函数中,都是以xxx的手段降维,每个函数都有axis这个参数,即沿某个方向,使用xxx方法对输入的Tensor进行降维。【axis的默认值是None,即把input_tensor降到0维,即一个数。】

对于二维input_tensor而言:axis=0,则按列计算:axis=1,则按行计算。【参数reduction_indices是为了兼容以前的版本与axis保证相同的含义。】

                                                                                       规约计算函数

                                      操作                                                       描述

tf.reduce_sum(input_tensor,axis=None,

keep_dims=False,name=None,

reduction_indices=None)

计算输入tensor元素的和,或者按照axis指定的轴进行求和。例如:

x = [[1,1,1],[1,1,1]]

tf.reduce_sum(x) ==> 6

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

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

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

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

tf.reduce_prod(input_tensor,axis=None,

keep_dims=False,name=None,reduction_indices=None)

计算输入tensor元素的乘积,或者安照axis指定的轴进行求乘积。例如:

fi = tf.Variable(tf.constant([2,3,4,5]),shape=[2,2])

ff = tf.reduce_prod(fi,0)

with.tf.Session() as sess:

      sess.run(tf.global_variables_initializer())

      print(sess.run(fi))

      print(sess.run(ff))

运行代码如下:

[[2 3]

 [4 5]]

[8 15]

tf.reduce_min(input_tensor,axis=None,keep_dims=False,

name=None,reduction_indices=None)

求tensor中的最小值

tf.reduce_max(input_tensor,axis=None,keep_dims=False,

name=None,reduction_indices=None)

求tensor中的最大值

tf.reduce_mean(input_tensor,axis=None,keep_dims=False

name=None,reduction_indices=None)

求tensor中的平均值

tf.reduce_all(input_tensor,axis=None,keep_dims=False,

name=None,reduction_indices=None)

对tensor中的各个元素求逻辑‘与’。例如:

x = [[True,True],[False,False]]

tf.reduce_all(x) ==> False

tf.reduce_all(x,0) ==> [False,False]

tf.reduce_all(x,1) ==> [True,False]

tf.reduce_any(input_tensor,axis=None,keep_dims=False,

name=None,reduction_indices=None)

对tensor中各个元素求逻辑‘或’

分割:

       分割操作是Tensorflow不常用的操作,在复杂的网络模型里偶尔才会用到。

                                                                                      分割相关函数

                               操作                                                               描述
tf.segment_sum(data,segment_ids,name=None)

按照segment_ids指定的维度,分割张量data中的值,还可以返回data中指定片段的累加和。例如:

c = tf.constant([[1,2,3,4],[-1,-2,-3,-4],[5,6,7,8]])

tf.segment_sum(c,tf.constant([0,0,1]))

其输出如下:

[[0 0 0 0]

[5 6 7 8]]

这个例子表明:将c按照[0,0,1]的维度来分割,并将c总的头两行加起来作为结果的 第1行,将c中的第3行作为结果的第2行

tf.segment_prod(data,segment_ids,name=None)根据segment_ids的分段计算各个片段的积
tf.segment_min(data,segment_ids,name=None)根据segment_ids的分段计算各个片段的最小值
tf.segment_max(data,segment_ids,name=None)根据segment_ids的分段计算各个片段的最大值
tf.segment_mean(data,segment_ids,name=None)根据segment_ids的分段计算各个片段的平均值

tf.unsorted_segment_sum(data,segment_ids,

num_segments,name=None)

与tf.segment_sum函数类似,不同在于segment_ids中id顺序可以是无序的。

tf.sparse_segment_sum(data,indices,

segment_ids,name=None)

输入进行稀疏分割求和。例如:

c = tf.constant([[1,2,3,4],[-1,-2,-3,-4],[5,6,7,8]])

#取c的头两行,并将返回的结果[1,2,3,4],[-1,-2,-3,-4]中的第1行和第2行相加作为最终结果的第一行返回,tf.sparse_segment_sum(c,tf,constant([0,1]),tf.constant([0,0]))

tf.sparse_segment_sum(data,indices,

segment_ids,name=None)

则输出如下:[[0 0 0 0]]

对原data的indices为[0,1]位置的进行分割,并按照segment_ids的分组进行求和

序列比较与索引提取

                                                                             序列比较与索引提取相关函数

                                  操作                                                          描述
tf.argmin(input,axis,name=None)返回input最小值的索引index
tf.argmax(input,axis,name=None)返回input最大值的索引index。axis:0表示按列,axis:1表示按行
tf.setdiffld(x,y,name=None)返回x,y中不同值的索引
tf.where(condition,x=None,Y=None,name=None)

根据指定条件,返回对应的值或坐标。若x、y都为None,

返回condition值为True的坐标,若x、y都不为None,

返回condition值为True的坐标在x内的值,condition值为False的坐标在y内的值。例如:

cond=[True,False,False,True]

x=[1,2,3,4]

y=[5,6,7,8]

tf.where(cond) ==> [[0] [3]]

tf.where(cond,x,y) ==> [1 6 7 4]

tf.unique(x,name=None)

返回一个元祖tuple(y,idx)。其中,y为x列表的唯一化数据列表,idx为x数据对应y元素的index。例如:

x = [1,1,2,4,4,4,7,8,8]

y,idx = unique(x)

y ==> [1,2,4,7,8]

idx ==> [0,0,1,2,2,2,3,4,4]

tf.finvert_permutation(x,name=None)

将x中元素的值当做索引,返回新的张量。例如:

x=[3,4,0,2,1]

invert_permutation(x)  == > [2,4,3,0,1]

tf.random_shuffle(input)沿着input的第一维进行随机重新排列

错误类

                                                                                             错误类

                        操作                                                           描述
class tf.OpError一个基本的错误类型,在当TF执行失败时报错。
tf.OpError.op返回执行失败的操作节点。有的操作如Send或Recv可能不会返回,则要用到node_def方法
tf.OpError.node_def以NodeDef proto形式表示失败的OP
tf.OpError.error_code描述该错误的整数错误代码
tf.OpError.message返回错误信息
class tf.errors.CancelledError当操作或者阶段被取消时报错
class tf.errors.UnknownError未知错误类型
class tf.errors.InvalidArgumentError在接收到非法参数时报错

class tf.errors.NotFoundError

当发现不存在所请求的一个实体时,比如文件或目录
class tf.errors.AlreadyExistsError当创建的实体已经存在时报错
class tf.errors.PermissionDeniedError没有执行权限做某操作时报错
class tf.errors.ResourceExhaustedError资源耗尽时报错
class tf.errors.FaildPreconditionError系统没有条件执行某个行为时报错。
class tf.errors.AbortedError操作中止时报错,常常发生在并发情形
class tf.errors.OutOfRangeError超出范围报错
class tf.errors.UnimplementedError某个操作没有执行时报错
class.tf.errors.InternalError当系统经历了一个内部错误时报出
class tf.errors.DataLossError当出现不可恢复的错误,例如在运行tf.WholeFileReader.read读取整个文件的同时文件被删减

tf.errors.XXXXX._init_(node_def,op,

message)

使用该方式创建以上各种错误类

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值