Tensor数据相关的运算、函数讲解及与numpy区别
来源:互联网 发布:网络摄像机球机 编辑:程序博客网 时间:2024/06/05 18:39
Tensor
tensorflow 中使用它来表示数据。可以看做多维数组或者list。
标量是张量,向量是张量,矩阵是张量,矩阵的矩阵是张量。
常用几种定义方法
1. variable变量,一般是可以被更更新或更改的数值,即在流图运行过程中可以被不断动态调整的值。我们训练一个模型的时候,会用到Tensorflow中的变量(Variables),我们需要它来保持和更新参数值,和张量一样,变量也保存在内存缓冲区当中。
我们要预先对变量初始化,Tensorflow的变量必须先初始化然后才有值!而常值张量是不需要的,变量可以先设置好初始化方式,但是真正初始化是要sess.run(tf.global_variables_initializer())才真的初始化。
2.constant 常量张量
3.placeholder:占位符 动态改变值 feeddict
numpy
b = np.array( [ (1.5,2,3), (4,5,6) ] )
Tensorflow 和numpy区别
相同点: 都提供n位数组
不同点: numpy支持ndarray,而Tensorflow里有tensor;numpy不提供创建张量函数和求导,也不提供GPU支持。
显示
Tensor
需要加eval函数
ta = tf.zeros((2,2))
print(ta)
Tensor(“zeros_1:0”, shape=(2, 2), dtype=float32)
print(ta.eval())
numpy
a = np.zeros((2,2))
print(a)
Tensor 相关操作
算术操作
1.加法操作Tensor、numpy 两个的效果一致遇到不相同的维度时,会自动扩充。但是同一维度上的大小必须一致的,除了某一维度是值是1的情况。Tensor的shape是(tensor,1)和(1,tensor)这是可以相加的,会自动扩充。2.矩阵乘法TensorA * B 表示按元素计算tf.mul(A,B) 表示按元素计算tf.matmul(A,B) 表示矩阵乘法3.numpyA * B 表示按元素计算dot(A,B)表示矩阵乘法
数据类型转换
tf.to_double(a)tf.to_float(a)tf.cast(x, dtype, name=None)tensor a is [1.8, 2.2], dtype=tf.floattf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32
形状操作
1.shapenumpy:a.shape()Tensor:a.get_shape() tf.shape(a)2.reshapeTensor:tf.reshape(a, (1,4))numpy:np.reshape(a,(1,4))3.tf.size(a)返回数据的元素数量tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]]) size = 124.tf.rank(a) 返回tensor的rank #’t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]# shape of tensor ‘t’ is [2, 2, 3]rank(t) ==> 35.某一维求和Tensor:tf.reduce_sum(b,reduction_indices=1)numpy:np.sum(b,axis=1)
数组方面的 切片和合并
1.合并、连接数组Tensortf.concat(0,[a,b])第一个参数表述位数若a (1,128,128,3) b( 1,128,128,3)tf.concat(0,[a,b]) ( 2,128,128,3)numpyvstack 和 hstack stack(a,axis=)2.获取整行整列数据Tensor temp = tf.constant(0,shape=[5,5])temp1 = temp[0,:] 获取某行temp2 = temp[:,1] 获取某列temp[1,1] 获取某个元素temp[1:3,1:3] 获取某个范围的行列元素 沿着某一维度将tensor分离为num_split tensorstf.split(split_dim, num_split, value, name=’split’)# ‘value’ is a tensor with shape [5, 30]# Split ‘value’ into 3 tensors along dimension 1split0, split1, split2 = tf.split(1, 3, value)tf.shape(split0) ==> [5, 10]3.对tensor进行切片操作tf.slice(input_, begin, size, name=None)#’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]]]4.打包tf.pack(values, axis=0, name=’pack’)# ‘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])5.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]]]]# tensor ‘t’ shape is [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]]]]6.tf.transpose(a, perm=None, name=’transpose’)调换tensor的维度顺序如为定义,则perm为(n-1…0)# ‘x’ is [[1 2 3],[4 5 6]]tf.transpose(x) ==> [[1 4], [2 5],[3 6]]# Equivalentlytf.transpose(x, perm=[1, 0]) ==> [[1 4],[2 5], [3 6]]
矩阵相关操作
1.tf.matrix_inverse 方阵的逆矩阵 2.tf.matrix_determinant 方阵的行列式3.tf.transpose转置 4.tf.diag 给定对角线上的值,返回对角tensor
Tensor 和 numpy array互转
1.numpy array 到 TensornumpyData = np.zeros((1,10,10,3),dtype=np.float32)tf.convert_to_tensor(numpyData)2.Tensor到 numpy array eval()tf.constant([1,2,3]).eval()
参考文献
Tensor数据相关的运算及函数讲解
- Tensor数据相关的运算、函数讲解及与numpy区别
- Tensor数据相关的运算及函数讲解
- numpy的函数讲解
- numpy数据相关函数总结
- numpy mat 与 matrix 函数的区别
- Numpy数据存取与函数
- tensor 和 numpy 的互相转换
- python中numpy的argsort函数讲解
- numpy.flatten() 与 numpy.ravel()的区别
- Numpy库学习——线性代数及相关运算
- numpy np.repeat 与 np.tile的区别, numpy.ravel()函数
- MATLAB与numpy矩阵中元素位运算的实现区别
- strlen与strcpy函数实现的浅谈及辨析sizeof运算符与strlen函数的区别
- numpy 相关函数
- Unicode与多字符集的区别、使用及相关函数
- Python内置函数与numPy运算速度对比
- 【python学习笔记】18:numpy数组函数与矩阵运算
- numpy中tile函数讲解
- android aar 使用
- spring aop报错
- codeforces 862E Mahmoud and Ehab and the function 二分+思维
- Android中使用AIDL时的跨进程回调—Server回调Client
- 友元函数、友元类
- Tensor数据相关的运算、函数讲解及与numpy区别
- css选择器优先级
- ACM-ICPC北京站网络赛A题---Visiting Peking University
- QtableView 刷新行数
- kobject和kset的一些学习心得
- Spring定时器Quartz,定时调用存储过程
- [USACO08FEB][bzoj1611]流星雨Meteor Shower
- VMware12安装VMware Tools不成功会出现 /mnt/hgfs下不会出现共享文件夹
- 安装eclipse ADT