tensorflow学习笔记:张量介绍以及张量操作函数

张量(tensor)

tensorflow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor。
tensor堪为一个n维的数组或列表,每个tensor中包含类型(type)、阶(rank)和形状(shape)。

tensor类型

tensor类型python类型描述
DF_FLOATtf.float3232位浮点数
DF_DOUBLEtf.float6461为浮点数
DF_INT64tf.int6464位有符号整数
DF_INT32tf.int3232位有符号整数
DF_INT16tf.int1616位有符号整数
DF_INT8tf.int88位有符号整数
DF_UINT8tf.uint88位无符号整数
DT_STRINGtf.string可变长度的字节数组,每一个张量元素都是一个字节数组
DT_BOOLtf.bool布尔型
DT_COMPLEX64tf.complex64有两个32位浮点数组成的复数:实数和虚数。

阶(rank)

tensor的阶表示维度,例如:[[1,2,3],[4,5,6],[7,8,9]]表示二阶张量。
注意:这个阶与矩阵的阶不一样,上面的例子为3阶矩阵,但是他是一个2阶的张量。

形状(shape)

用于秒速张量内部的组织关系。a=[[1,2,3],[4,5,6]]的形状为(2,3)。

对张量的操作函数

对张量的操作主要分为:

  • 类型变换
  • 数值操作
  • 形状变换
  • 数据操作

下面记录一些常用的对张量进行操作的函数。

类型转换
函数描述
tf.string_to_number(string_tensor,out_type=None,name=NOne)字符串转为数字
tf.to_double(x,name=“ToDouble”)转为64位浮点类型
tf.to_float(x,name=“ToFloat”)转为32位浮点类型
tf.to_int32(x,name=“ToInt32”)转为32位整型
tf.to_int64(x,name=“ToInt64”)转为64位整型
tf.cast(x,dtype,name=None)将x的类型转成dtype指定的类型

数值操作

函数描述
tf.ones(shape,dype)按指定类型与形状生成值为1的张量
tf.zeros(shape,dype)按指定类型与形状生成值为0的张量
tf.ones_like(input)生成和输入张量一样形状和类型的1
tf.zeros_like(input)生成和输入张量一样形状和类型的0
tf.fill(shape,value)为指定形状填值
tf.constant(value,shape)生成常量
tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)正态分布随机数,均值为mean,标准差为stddev。
tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)截断正态分布随机数,均值为mean,方差为stddev,只保留[mean-2stddev,mean+2stddev]
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None)均匀分布随机数,范围为[minval,maxval]
tf.random_crop(value,size,seed=None,name=None)将输入值value按照size尺寸随机剪辑
tf.set_random_seed(seed)设置随机种子
tf.linspace(start,stop,num,name=None)在[start,stop]范围内产生num个数的等差数列
tf.range(start,limit=None,delta=1,name=“range”)在[start,limit]内以步长delta产生等差数列
形状变换
函数描述
tf.shape(input,name=None)返回一个张量,棋值为输入参数的shape。
tf.size(input,name=None)返回一个张量,其内容为输入数据的元素数量
tf.rank(input,name=None)
tf.reshpe(input,shape,name=None)将原有输入数据的shape按照指定形状进行变化,生成一个新的张量
tf.expand_dims(input,dim,name=None)插入维度1进入一个tensor
tf.squeeze(input,dim,name=None)将dim指定的维度去掉1,dim必须为1,不为1会报错
数据操作
函数描述
tf.slice(input,begin,size,name+None)对输入数据input进行切片操作,begin与size可以为list类型,要求begin与size的值必须一一对应,并且begin中每个值都是大于等于0且小于size中对应的值
tf.split(value,num_or_size_splits,axis=0,num=NOne,name=“split”)沿着某一维度将tensor分离为num_or_size_splits
tf.concat(cconcat,dim,values,name-“comcat”)沿着某一维度连接tensor
tf.stack(input,axis=0)将两个N维张量列表沿着axis轴组合成一个N+z维的张量
tf.unstack(value,num=NOne,axis=0,name=“unstack”)将输入value按照指定的行或列进行拆分,并输出含有num个元素的列表,axis为0表示按行拆分,axis=1表示按列拆分
tf.gather(params,indices,validate_indices=None,name=None)合并索引indices所指示params中的切片
tf.one_hot(indices,depth,on_value=NOne,off_calue=None,axis=None,dtype=None,name=None)生成独热编码的张量
tf.count_nonzero(input_tensor,axis=None,keep_dims=False,dtype=dtype.int64,name=None,reduction_indices=None)统计非零个数

为了更好地学习,加深对张量操作印象以及方便查询,特地将一些常用的函数加入到个人笔记中来。如果发现那里存在错误,欢迎大家在评论区进行评论、留言。
参考:李金洪老师的《深度学习之TensorFlow入门、原理与进阶实战》。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值