Tensorflow 基础类型定义与操作

张量tensor包含type,rank和shape三个属性

tensor类型

张量类型python类型
DT_FLOATtf.float32
DT_DOUBLEtf.float64
DT_INT64tf.int64
DT_INT32tf.int32
DT_INT16tf.int16
DT_INT8tf.int8
DT_STRINGtf.string
DT_BOOLtf.bool
DT_COMPLEX64tf.complex64

rank指维度,张量形状可以通过python中的整数列表或元组表示。

常用操作

1、类型转换

	tf.string_to_number(string_tensor,out_type,name)
	tf.to_double(x,name='ToDouble')
	tf.to_float(x,name='ToFloat')
	tf.to_int32(x,name='ToInt32')
	tf.to_int64(x,name='ToInt64')
	tf.cast(x,dtype,name=None) 将x(或x的values)的类型转换为指定类型

2、数值操作

tf.ones(shape,type) 按照指定形状,生成值为1的张量
tf.zeros(shape,type)生成值为0的向量
tf.ones_like(input) 生成和输入张量形状相同 的值为1的张量
tf.zeros_like(input)
tf.fill(shape,value) 生成指定形状值为value的张量
tf.constant(value,shape) 生成常量
tf.random_normal(shape,mean=0.0,stddev=1.0,dtype , seed,name) 生成正态分布随机数,均值mean,标准差stddev
tf.truncated_normal(shape,mean,stddev,dtype,seed,name) 截断正态分布随机数,只保存 [mean-2*]
tf.random_uniform(shape,minval,maxval) 均匀分布随机数
tf.random_crop(value,size)将输入值按照size尺寸剪辑
tf.set_random_seed(seed) 设置随机数种子
tf.linespace(start,stop,num) 产生num个等差数列,在start-stop范围中
tf.range(start,limit,delta=1) 在start 和limit中产生步长为delta的等茶水列,不包括limit

3、形状操作

tf.shape(input) 返回张量的shape
tf.size(input) 返回张量中元素的个数
tf.rank(input) 返回张量的阶数
tf.reshape(input,shape) 将张量转换为目标形状
tf.expand_dims(input,dim) 插入维度1到张量中
tf.squeeze(input,dim) 去除指定维度,去除的维度必须是1

4、数据操作

tf.slice(input,begin,size) 对输入数据切片
tf.split(value,num_or_size_splits) 沿某一维度将张量分离
tf.concat(dim,values)沿某一维度连接张量 ,指定维度的数组会合并
tf.stack(input,axis=0) 在指定维度拼接张量,指定维度会变成数组,也就是额外套一层;t1 =[[1,2,3],[4,5,6]] ;t2 =[[1,2,3],[4,5,6]],tf.stack([t1,t2],axis=1) =[[[1,2,3],[1,2,3]],[[4,5,6],[4,5,6]]]
tf.one_hot(indices,depth,on_value,off_value,axis=None) 生成符合onehot编码的张量,indices要生成的张量,depth长度的数组中哪个索引值为onehot的值,onehot值为多少,非onehot值为多少,axis-1时,生成的shape为[indices长度,depth],0时为[depth,indices,,1时为pdepth,batch,indices;
indices = [0,2,-1,4]
depth = 3
on_value =1
off_value = 0
axis = -1
#axis取 -1时,张量时0时的转置
t= tf.one_hot(indices=indices,depth= depth,on_value=on_value,off_value=off_value)
#tf开头的代码必须放到session的run方法中
session = tf.Session()
print(session.run(t))

[[1 0 0]
 [0 0 1]
 [0 0 0]
 [0 0 0]]

5、算术操作

tf.assign(x,y)  令x=y
tf.add(x,y) 求和
tf.subtract(x,y) 减法
tf.multiply(x,y) 乘法
tf.divide(x,y) 除法
tf.mod(x,y)取模
tf.abs(x)求绝对值
tf.negative(x) 取负值
tf.inv(x) 对取反操作
tf.square(x) 计算平方
tf.round(x) 舍入最近的整数
tf.sqr(x) 开根号
tf.pow(x,y) 幂次方计算
tf.exp(x) 计算e的x次方
tf.log(x)计算e的ln
tf.maximum(x,y)最大值
tf.cond(pred,true_fn,false_fn) 满足条件执行f1,否则执行f2

6、矩阵相关操作

tf.diag(digonal) 返回一个给定对角值的对角矩阵
 tf.diag_part(tens) 与上面相反,获取矩阵的对角值 的列表
session = tf.Session()
tens =tf.diag([1,2,44,12])

td = tf.diag_part(tens)
print(session.run(td))
td = tf.trace(tens) 二维矩阵对角线之和
tf.transpose(a,perm) 对张量a进行转置,按照指定维度
tf.reverse(tensormduns) 沿着指定的维度对输入进行反转
tf.matmul(a,b) 矩阵相乘
tf.matrix_determinant(input)   返回方阵的行列式
tf.matrux_inverse(input,adjoint=None) 求方阵的逆矩阵,adjoint为true时,计算输入共轭矩阵的逆矩阵
tf.cholesky(input) 对输入方阵cholesky分解
tf.natrux_solve(matrux,rhs,adjoint)求解矩阵方程,返回矩阵变量

7、复数操作

tf.complex(rea,imag) 将实属转换为复数形式
tf.complex_abs(x) 计算复数的绝对值
tf.conj(input) 计算共轭复数
tf.imag(input) 提取虚部
tf.real(input)提取实部
tf.fft(input) 计算一维离散傅里叶变换

8、规约计算

tf.reduce_sum(input,axis,keep_dims,name,reduction_indices) 计算输入tensor的和,
tf.reduce_prod(input,axis,keep_dims =False,name=none,reduction) 计算输入tensor的乘积
tf.reduce_min
tf.reduce_max
tf.reduce_mean
tf.reduce_all 对tensor的各个元素求逻辑“与”
tf.reduce_any 求逻辑或

9、序列比较和索引提取

tf.argmin(input) 返回input最小值的索引、
tf.argmax(input)返回input最大值的索引
tf.setdiff1d(x,y) 返回x,y中不同值的索引
tf.where(condition,x,y)  如果x,y都不为null,则返回condition为true的x的值,false时y的值,都为null时,返回cond中true的坐标列表
tf.unique(x) 返回去重后的元组
tf.invert_permutation(x) 把x中元素的值当作索引返回新的张量
tf.random_shuffle(input ) 沿着input第一维进行随机重新排列 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值