Tensor-flow常用函数(非常详细)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

11、tensorflow常用函数TensorFlow将图形定义转换成分布式执行的操作,以充分利用可用的计算资源(如CPU或GPU。一般你不需要显式指定使用CPU还是GPU,TensorFlow能自动检测。如果检测到GPU,TensorFlow会尽可能地利用找到的第一个GPU来执行操作.并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进。大部分核相关的操作都是设备相关的实现,比如GPU。下面是一些重要的操作/核:操作组操作MathsAdd,Sub,Mul,Div,Exp,Log,Greater,Less,EqualArrayConcat,Slice,Split,Constant,Rank,Shape,ShuffleMatrixMatMul,MatrixInverse,MatrixDeterminantNeuronalNetworkSoftMax,Sigmoid,ReLU,Convolution2D,MaxPoolCheckpointingSave,RestoreQueuesandsyncronizationsEnqueue,Dequeue,MutexAcquire,MutexReleaseFlowcontrolMerge,Switch,Enter,Leave,NextIterationTensorFlow的算术操作如下:操作描述tf.add(x,y,name=None)求和tf.sub(x,y,name=None)减法tf.mul(x,y,name=None)乘法tf.div(x,y,name=None)除法tf.mod(x,y,name=None)取模tf.abs(x,name=None)求绝对值tf.neg(x,name=None)取负(y=-x).tf.sign(x,name=None)返回符号y=sign(x)=-1ifx0;0ifx==0;1ifx0.tf.inv(x,name=None)取反tf.square(x,name=None)计算平方(y=x*x=x^2).tf.round(x,name=None)舍入最接近的整数#‘a’is[0.9,2.5,2.3,-4.4]tf.round(a)==[1.0,3.0,2.0,-4.0]tf.sqrt(x,name=None)开根号(y=\sqrt{x}=x^{1/2}).tf.pow(x,y,name=None)幂次方#tensor‘x’is[[2,2],[3,3]]#tensor‘y’is[[8,16],[2,3]]tf.pow(x,y)==[[256,65536],[9,27]]tf.exp(x,name=None)计算e的次方tf.log(x,name=None)计算log,一个输入计算e的ln,两输入以第二输入为底tf.maximum(x,y,name=None)返回最大值(xy?x:y)tf.minimum(x,y,name=None)返回最小值(xy?x:y)tf.cos(x,name=None)三角函数cosinetf.sin(x,name=None)三角函数sinetf.tan(x,name=None)三角函数tantf.atan(x,name=None)三角函数ctan张量操作TensorTransformations2数据类型转换Casting操作描述tf.string_to_number(string_tensor,out_type=None,name=None)字符串转为数字tf.to_double(x,name=’ToDouble’)转为64位浮点类型–float64tf.to_float(x,name=’ToFloat’)转为32位浮点类型–float32tf.to_int32(x,name=’ToInt32’)转为32位整型–int32tf.to_int64(x,name=’ToInt64’)转为64位整型–int64tf.cast(x,dtype,name=None)将x或者x.values转换为dtype#tensorais[1.8,2.2],dtype=tf.floattf.cast(a,tf.int32)==[1,2]#dtype=tf.int32形状操作ShapesandShaping操作描述tf.shape(input,name=None)返回数据的shape#‘t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]shape(t)==[2,2,3]tf.size(input,name=None)返回数据的元素数量#‘t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]]size(t)==12tf.rank(input,name=None)返回tensor的rank注意:此rank不同于矩阵的rank,tensor的rank表示一个tensor需要的索引数目来唯一表示任何一个元素也就是通常所说的“order”,“degree”或”ndims”#’t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]#shapeoftensor‘t’is[2,2,3]rank(t)==3tf.reshape(tensor,shape,name=None)改变tensor的形状#tensor‘t’is[1,2,3,4,5,6,7,8,9]#tensor‘t’hasshape[9]reshape(t,[3,3])==[[1,2,3],[4,5,6],[7,8,9]]#如果shape有元素[-1],表示在该维度打平至一维#-1将自动推导得为9:reshape(t,[2,-1])==[[1,1,1,2,2,2,3,3,3],[4,4,4,5,5,5,6,6,6]]tf.expand_dims(input,dim,name=None)插入维度1进入一个tensor中#该操作要求-1-input.dims()#‘t’isatensorofshape[2]shape(expand_dims(t,0))==[1,2]shape(expand_dims(t,1))==[2,1]3shape(expand_dims(t,-1))==[2,1]=dim=input.dims()切片与合并(SlicingandJoining)操作描述tf.slice(input_,begin,size,name=None)对tensor进行切片操作其中size[i]=input.dim_size(i)-begin[i]该操作要求0=begin[i]=begin[i]+size[i]=Diforiin[0,n]#’input’is#[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]],[[5,5,5],[6,6,6]]]tf.slice(input,[1,0,0],[1,1,3])==[[[3,3,3]]]tf.slice(input,[1,0,0],[1,2,3])==[[[3,3,3],[4,4,4]]]tf.slice(input,[1,0,0],[2,1,3])==[[[3,3,3]],[[5,5,5]]]tf.split(split_dim,num_split,value,name=’split’)沿着某一维度将tensor分离为num_splittensors#‘value’isatensorwithshape[5,30]#Split‘value’into3tensorsalongdimension1split0,split1,split2=tf.split(1,3,value)tf.shape(split0)==[5,10]tf.concat(concat_dim,values,name=’concat’)沿着某一维度连结tensort1=[[1,2,3],[4,5,6]]t2=[[7,8,9],[10,11,12]]tf.concat(0,[t1,t2])==[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]tf.concat(1,[t1,t2])==[[1,2,3,7,8,9],[4,5,6,10,11,12]]如果想沿着tensor一新轴连结打包,那么可以:tf.concat(axis,[tf.expand_dims(t,axis)fortintensors])等同于tf.pack(tensors,axis=axis)tf.pack(values,axis=0,name=’pack’)将一系列rank-R的tensor打包为一个rank-(R+1)的tensor#‘x’is[1,4],‘y’is[2,5],‘z’is[3,6]pack([x,y,z])=[[1,4],[2,5],[3,6]]#沿着第一维packpack([x,y,z],axis=1)=[[1,2,3],[4,5,6]]等价于tf.pack([x,y,z])=np.asarray([x,y,z])tf.reverse(tensor,dims,name=None)沿着某维度进行序列反转其中dim为列表,元素为bool型,size等于rank(tensor)#tensor‘t’is[[[[0,1,2,3],#[4,5,6,7],#[8,9,10,11]],#[[12,13,14,15],#[16,17,18,19],#[20,21,22,23]]]]4#tensor‘t’shapeis[1,2,3,4]#‘dims’is[False,False,False,True]reverse(t,dims)==[[[[3,2,1,0],[7,6,5,4],[11,10,9,8]],[[15,14,13,12],[19,18,17,16],[23,22,21,20]]]]tf.transpose(a,perm=None,name=’transpose’)调换tensor的维度顺序按照列表perm的维度排列调换tensor顺序,如为定义,则perm为(n-1…0)#‘x’is[[123],[456]]tf.transpose(x)==[[14],[25],[36]]#Equivalentlytf.transpose(x,perm=[1,0])==[[14],[25],[36]]tf.gather(params,indices,validate_indices=None,name=None)合并索引indices所指示params中的切片tf.one_hot(indices,depth,on_value=None,off_value=None,axis=None,dtype=None,name=None)indices=[0,2,-1,1]depth=3on_value=5.0off_value=0.0axis=-1#Thenoutputis[4x3]:output=[5.00.00.0]//one_hot(0)[0.00.05.0]//one_hot(2)[0.00.00.0]//one_hot(-1)[0.05.00.0]//one_hot(1)矩阵相关运算操作描述tf.diag(diagonal,name=None)返回一个给定对角值的对角tensor#‘diagonal’is[1,2,3,4]tf.diag(diagonal)==[[1,0,0,0][0,2,0,0][0,0,3,0][0,0,0,4]]tf.diag_part(input,name=None)功能与上面相反5tf.trace(x,name=None)求一个2维tensor足迹,即对角值diagonal之和tf.transpose(a,perm=None,name=’transpose’)调换tensor的维度顺序按照列表perm的维度排列调换tensor顺序,如为定义,则perm为(n-1…0)#

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功