复数操作函数:
复数操作函数
函数 | 描述 |
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) | 使用该方式创建以上各种错误类 |