Tensor数据相关的运算、函数讲解及与numpy区别


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 (11281283)  b( 11281283)
tf.concat(0,[a,b])  ( 21281283)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-10)
# ‘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数据相关的运算及函数讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python程序设计—车万翔

程序设计入门—Python 对象和类型 五种基本对象类型 字符串 (string),简记为 str 使用 ’ ’ 或 ” ” 括起来的一系列字符 整数(integer),简记为 int 十进制:21,八进制&#xf…

【重大修改】动态时间规整(Dynamic Time Warping)

本文只是简单的介绍DTW算法的目的和实现。具体的DTW可以参考一下文献: 离散序列的一致性度量方法:动态时间规整(DTW) http://blog.csdn.net/liyuefeilong/article/details/45748399 动态时间归整/规整/弯曲(Dynamic time warpi…

python中的深拷贝与浅拷贝

浅拷贝的时候,修改原来的对象,深拷贝的对象不会发生改变。 对象的赋值 对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷贝这个对象,而只是拷贝了…

从机器学习谈起

很好的一篇文章,转载自博客园:http://www.cnblogs.com/subconscious/p/4107357.html 在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算…

核函数

由于下一篇要学机器学习的另外一种模型——核模型,里面涉及到核函数,所以先找了一下核函数的相关知识。 在知乎上看到了一些比较好的解答,详细参考:http://www.zhihu.com/question/24627666 首先举一个核函数把低维空间映射到高…

关于Matlab编程的思考(待续)

Matlab编程的规范化思考 1.并行化 2.释放内存 3.需要调参的变量太多,可考虑将变量都放到一个结构体里面。 4.find(y),就是要找到y中那些非零项的指引 5.代码运行出现问题的时候,在命令行输入why就可以得到答案 6.输入bench可以给电脑跑分。 7.hom…

拉普拉斯锐化图像

在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度,与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度。 图的边缘是指在局部不连续的特征。 简要介绍一下原理&#xff1…

运动捕捉数据的描述ASF/AMC

运动捕捉数据有多种格式:ASF/AMC,BVH,C3D等,这三个是比较常用的,一般的matlab实验用的是ASF/AMC,其次就是BVH。 ASF/AMC文件格式是Acclaim Games公司设计开发的,全称是Acclaim Skeleton File/A…

应用深度学习(台大陈蕴侬李宏毅) Part1

History of Deep Learning Big Data & GPU 端到端 Universality Theorem Core Factors for Applied Deep Learning 参考文献 http://v.qq.com/vplus/578e2d6f5e1fadc1/foldervideos/8n1000201qzzkx5 Deep Learning ◦Goodfellow, Bengio, and Courville, “Deep Learning…

世界坐标

世界坐标是最直观反映人体在世界坐标系下运动位置的变化信息,对分析运动行为有重要的作用。下面介绍如何根据ASF/AMC文件计算人体各个关节的世界坐标。 根据前面讲的ASF/AMC文件的格式,可以知道人体运动可以看做是通过根节点root的平移以及其他关节绕其父…

12bit灰度图像映射到8bit显示及python 实现

图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题 1、显示器往往只有 8-bit, 而数据有 12- 至 16-bits。 2、如果将数据的 min 和 max…

人工神经网络——径向基函数(RBF)神经网络

此博客排版不好,重新用Markdown写了一篇,同时附上了代码,戳这里 本文摘自:《模式识别与智能计算——matlab技术实现第三版》与《matlab神经网络43个案例分析》 【注】蓝色字体为自己的理解部分 径向基函数神经网络的优点&#xf…

基于RBF简单的matlab手写识别

GetFeature.m %将图像分为25块,计算每一块的空白部分所占比例 function dataGetFeature(I) [row,col]find(I0); %返回数字的上下左右的边界 II(min(row):max(row),min(col):max(col)); %截取手写数字图像,使其紧包含数字边界&…

李宏毅机器学习课程-Transfer Learning

深度学习 -> 强化学习 ->迁移学习(杨强教授报告) 李宏毅机器学习课程-Transfer Learning 迁移学习-吴恩达 freeze 待处理的 理解深层神经网络中的迁移学习及TensorFlow实现 Transfer Learning模式 Similar domain, different task…

matlab实现RBF的相关函数

摘自《matlab神经网络43个案例分析》 (1)newrb() 该函数可以用来设计一个近似径向基网络(approximate RBF)。调用格式为: [net,tr]newrb(P,T,GOAL,SPREAD,MN,DF) 其中P为Q组输入向量组成的R*Q位矩阵,T为Q组目标分类向量组成的S*Q维矩阵。GOAL为均方误…

李宏毅机器学习课程-Structured Learning

Simple structured learning framework for python pystruct-github Slides for explaining structured prediction and PyStruct -github 一、Structured Learning-Unifed Framework 之前的input and output 都是vectors Training阶段就是找一个F来评估&#xff…

MATLAB GPU编程基础

原文地址:http://blog.sina.com.cn/s/blog_863f5cf90102uyrh.html 从Matlab2013版本开始,matlab将可以直接调用gpu进行并行计算,而不再需要安装GPUmat库。这一改动的好处是原有的matlab内置函数都可以直接运用,只要数据格式是gpuA…

matlab之norm函数

简单点说就是用来计算范数的一个函数。 假设A是一个矩阵,那么norm(A)或者norm(A,2)计算的就是A的2范数;同理norm(A,1)计算的就是1范数了. 2范数:计算步骤是先计算A*A‘(这里A’代表转置,也就是原矩阵*(原…

word_cloud

word_cloud word_cloud wordcloud_server

matlab之reshape函数

简单来说,reshape(A,m,n)就是用来把原矩阵的元素,按照列读取排成一行,然后按照指定的m*n矩阵再按列放好。比如原矩阵为 A 1 2 3 4 5 6 7 8 9 10 11 12 我们先给他按列拍成一排(变相说…