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.矩阵乘法
Tensor
A * 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.float
tf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32

形状操作

1.shape
numpy:a.shape()
Tensor:a.get_shape()  tf.shape(a)2.reshape
Tensor: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.合并、连接数组Tensor
tf.concat(0,[a,b])第一个参数表述位数
若a (1,128,128,3)  b( 1,128,128,3)
tf.concat(0,[a,b])  ( 2,128,128,3)numpy
vstack 和 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 1
split0, 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]]
# 沿着第一维pack
pack([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]]
# Equivalently
tf.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区别相关推荐

  1. python中不同类型的数据不能相互运算_PyTorch中Tensor的数据类型和运算的使用

    在使用Tensor时,我们首先要掌握如何使用Tensor来定义不同数据类型的变量.Tensor时张量的英文,表示多维矩阵,和numpy对应,PyTorch中的Tensor可以和numpy的ndarra ...

  2. 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版

    <MATLAB数值实验一(数据的插值运算及其应用完整版>由会员分享,可在线阅读,更多相关<MATLAB数值实验一(数据的插值运算及其应用完整版(6页珍藏版)>请在人人文库网上搜 ...

  3. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

    1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...

  4. python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...

  5. 谈谈你对c语言中数据(各种常量,变量,函数参数,字符串)的存储认识,自考《高级语言程序设计》知识点总结(二)...

    2.1 C语言的数据类型 数据类型包含两方面的内容:数据的表示和对数据加工的操作.数据的全部可能表示构成数据类型的值的集合.数据全部合理的操作构成数据类型的操作集合. 在C语言中,把整型.实型和字符型 ...

  6. R语言数据对象与运算

    R语言数据对象与运算 笔记整理 2.1 数据对象及类型 R语言创建和控制的实体被称为对象(object) ls()命令来查看当前系统里的数据对象 R对象的名称必须以一个英文字母打头,并由一串大小写字母 ...

  7. R语言使用rnorm函数生成正太分布数据、使用boxplot函数可视化箱图、中间黑线为中位数位置、上下框线为上下四分位数位置、上下触须为1.5倍四分位数间距、如果有孤立点表示异常值

    R语言使用rnorm函数生成正太分布数据.使用boxplot函数可视化箱图.中间黑线为中位数位置.上下框线为上下四分位数位置.上下触须为1.5倍四分位数间距.如果有孤立点表示异常值 目录 R语言使用r ...

  8. 与大数据相关热门岗位有什么?

    随着更多形式的数据被发现,处理.收集.存储和分析数据的需求也在不断发展."商业智能"一词越来越流行,对新兴软件以及用于分析商业和运营绩效的系统的需求迅速增加因此衍生了很多与数据分析 ...

  9. python支持复数以及相关的运算吗_python复数运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 和大多数语言一样,python也有很多运算符,并且运算符跟其他语言的运算符大同小 ...

最新文章

  1. 世界上第一台电子计算机到底是谁发明的?
  2. java虚拟机调用linux_Java虚拟机字节码执行引擎
  3. PhpStorm之操作数据库
  4. 黑色炫酷粒子动态html网站源码
  5. LeetCode 343. Integer Break
  6. 研发团队绩效_如何在团队内部建立网络绩效文化
  7. python模拟抛体运动_换个姿势学物理!用Python和Matplotlib进行模拟
  8. 天龙源码框架分析_天龙源码分析 - 客户端登录流程
  9. MySql中in和exists效率
  10. 编码基本功:性能测试工具可用于检查死循环
  11. idea关联本地的svn项目
  12. 医院微信公众号开发文档
  13. 团队项目(一)(江山代有才人秃队)
  14. ale插件 vim_Vim中异步语法检查ale配置
  15. Google测试工师的一道面试题目
  16. 瓶子换水问题java_空瓶子换水问题
  17. 【网络协议】TCP/IP 协议
  18. 第5章第15节:案例:创作一份大气、华丽的卷轴动画 [PowerPoint精美幻灯片实战教程]
  19. (一)VR播放器项目介绍和到目前为止的工作进展
  20. 【缺失值填补】面板数据的缺失值补全方法

热门文章

  1. [蓝桥杯][算法提高]能量项链(区间dp)
  2. Weird Game CodeForces - 299C
  3. 机器学习实战--决策树算法
  4. 深度学习之卷积神经网络(12)深度残差网络
  5. python输入流和输出流_python读写gbk、utf-8等输入输出流
  6. 【Darknet-Yolov3】Ubuntu 服务器上无权限出现 ./darknet: error while loading shared libraries: libcudart.so.8.0
  7. 【OpenPose-Windows】中断问题及图像不同分辨率对帧率的影响
  8. 分析PCB技术印制电路板的可靠性设计(z)
  9. sim卡rfm_信用卡客户的RFM集群
  10. 可持久化数据结构加扫描线_结构化光扫描