张量 tensor

张量 tensor

Tensor是一个类, 包含了属性和常用函数, 一个Tensor对象主要包含一下三个部分,

如下所示:

Tensor("placeholder:0", shape=(2, 3), dtype=float32)

  • 第一部分是Tensor Name, 比如:‘Constant‘、 ’placeholder、 ‘Varuable‘等,

没什么实质性的含义, 知识表示Tensor的顺序,当前是0, 那么下一个Tensor就是1;

  • 第二部分是Tensor  shape,Tensor的形状,这里是[2,3], 也就是2行3列;
  • 第三部分是Tensor Type, 也就是tensor张量的数据类型

张量的形状

张量的形状,在Tensorflow中我们用阶乘表示:

在Tensorflow中,[n,m]向量, 表示n行m列, 行表示特征数量, 列表示样本数量。

Tensor数据类型


tensor的数据类型有很多, 如下图所示:

这里有float32, float64, 同理还有int32, int64,float64表示浮点数的精度,

但是实际并不会多分配内存,两者的使用效果差不多, 我们常用的float32.

Tensor 属性

tensor对象有以下属性, 我们可以通过tensor对象进行获取。

  • graph:张量对所在的图
  • op : 张量的op
  • name: 张量的名字
  • shape: 张量的形状

示例

 1 import tensorflow as tf
 2
 3 a = tf.constant(1.0)
 4
 5
 6 with tf.Session() as sess:
 7     print("graph-->", a.graph)
 8     print("op-->", a.op)
 9     print("name-->", a.name)
10     print("shape-->", a.shape)

输出结果:

graph--> <tensorflow.python.framework.ops.Graph object at 0x0000026D64F78C88>
op--> name: "Const"
op: "Const"
attr {
  key: "dtype"
  value {
    type: DT_FLOAT
  }
}
attr {
  key: "value"
  value {
    tensor {
      dtype: DT_FLOAT
      tensor_shape {
      }
      float_val: 1.0
    }
  }
}

name--> Const:0
shape--> ()

placeholder占位符张量

我们可以通过tf.placeholder来创建一个占位符张量, 用于在运行图的时候,可以动态

的赋予数据, 在Session中运行图的时候, 我们通过run(fetches, feed_dict=None,

graph=None)来来动态的赋予数据。

参数说明:

  • feches:tensor
  • feed_dict:喂养的动态数据
  • graph:默认就是当前的图,所以不用填写。
 1 import tensorflow as tf
 2
 3 plt = tf.placeholder(tf.float32, [2,3])
 4 print(plt)
 5
 6
 7 with tf.Session() as sess:
 8     print(sess.run(plt, feed_dict = {plt: [
 9                                      [1, 2, 3],
10                                      [4, 5, 6]
11     ]
12     }))

输出结果

Tensor("Placeholder:0", shape=(2, 3), dtype=float32)

[[1. 2. 3.]
 [4. 5. 6.]]

从图中可以看到,plt就是一个张量tensor

张量的动态形状和静态形状

Tensorflow中, 张量具有静态形状和动态形状。

  • 静态形状

创建一个张量, 初始状态的形状, 如果初始形态的状态的shape有不确定的项,可以通过tf.Tensor.set_shape()

去更新形状,一旦shape是确定的,不允许给修改,这个张量在整张图的运行中都是不能修改的。

可以通过tf.Tensor.get_shape()去获取静态的形状。

核心api:

获取静态形状:tf.Tensor.get_shape()

更新静态形状:tf.Tensor.set_shape()

  • 动态形状

一张描述原始张量在执行过程中的一种形状, 这个张量在图的执行过程中是可以动态改变的。

核心api:

更新形状: tf.reshape()

示例:

 1 import tensorflow as tf
 2
 3 plt = tf.placeholder(tf.float32, [None,2])
 4 print(plt)
 5
 6 #列已经确定了,行没有确定可以修改
 7 plt.set_shape([3,2])
 8 print(plt)
 9 print(plt.get_shape())
10
11
12 #reshape重新创建一个张量
13 plt2 = tf.reshape(plt, [2,3])
14 print(plt2)
15 with tf.Session() as sess:
16     pass

输出结果:

Tensor("Placeholder:0", shape=(?, 2), dtype=float32)
Tensor("Placeholder:0", shape=(3, 2), dtype=float32)
(3, 2)
Tensor("Reshape:0", shape=(2, 3), dtype=float32)

补充说明:reshape前后的张量的个数是不可变的,可以使用tensorflow提供的api创建张量

创建随机张量

1 tf.random.normal(shape, mean=0.0, stddev=1.0 , dtype=float32, seed=None, name=None)

说明:只需要关注两个参数,mean表示的是数据的平均值,stddev是数据的标准差

,当mean=0,stddev=1时,就是标准正太分布。

张量类型的转换


例如:将张量的dtype是tf.int32类型的,可以转换为tf.float32类型的。

核心api:tf.cast()

示例如下:

1 a = tf.constant(1.0)
2 b = tf.cast(a,tf.int32)

在上面的示例中将float32类型的转换为了int32类型的。

张量的合并

可以将两个张量合并,核心api是tf.concat(),示例如下:

1 import tensorflow as tf
2
3 b = [[1,2,3],[4,5,6]]
4 c = [[7,8,9],[10,11,12]]
5 #张量合并
6 d = tf.concat([b,c], axis = 0)
7
8 with tf.Session() as sess:
9     print(d.eval())

输出结果:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

补充说明:axis=0表示按行合并,axis=1表示按列合并

原文地址:https://www.cnblogs.com/Maxim/p/12633654.html

时间: 2024-08-26 14:21:02

张量 tensor的相关文章

张量 (tensor) 是什么?

对于大部分已经熟练的数学和物理工作者, 这实在是一个极为基础的问题. 但这个问题在我刚接触张量时也困扰了我很久. 张量的那么多定义, 究竟哪些是对的? (显然都是对的. ) 它们的关系是什么? 我尽可能简单地用我自己的话把我对它粗浅的理解讲得明白些. A View from Physics 张量的概念早在19世纪末就被数学家提出了, 但这个概念真正发扬光大, 还是在相对论出现以后. 原因是, 在相对论中, 在不同的参考系下看同一个物理系统, 它"看起来"是不一样的: 比如粒子的动量和能

Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节点之间则是由张量(Tensor)作为边来连接在一起的.所以Tensorflow的计算过程就是一个Tensor流图.Tensorflow的图则是必须在一个Session中来计算.这篇笔记来大致介绍一下Session.Graph.Operation和Tensor. Session Session提供了O

[转帖]Tensor是神马?为什么还会Flow?

Tensor是神马?为什么还会Flow? 互联网爱好者 百家号17-05-2310:03 大数据文摘作品,转载要求见文末 编译 | 邵胖胖,江凡,笪洁琼,Aileen 也许你已经下载了TensorFlow,而且准备开始着手研究深度学习.但是你会疑惑:TensorFlow里面的Tensor,也就是"张量",到底是个什么鬼?也许你查阅了维基百科,而且现在变得更加困惑.也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语.

[吃药深度学习随笔] 张量 计算图 会话

张量(tensor):即多为数组/列表 阶:即为张量的维数 张量可以表示0阶到n阶的多维数组 例子: import tensorflow as tf a = tf.constant([1.0, 2.0]) b = tf.constant([3.0, 4.0]) result = a+b print(result) 得到结果 Tensor("add:0", shape=(2,), dtype=float32) 计算图(Graph):搭建神经网络的计算过程,只搭建,不运算,运算在会话(Se

张量的通俗理解

也许你已经下载了TensorFlow,而且准备开始着手研究深度学习.但是你会疑惑:TensorFlow里面的Tensor,也就是"张量",到底是个什么鬼?也许你查阅了维基百科,而且现在变得更加困惑.也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语. 别担心! 我像小孩子一样讨厌数学,所以如果我能明白,你也可以!我们只需要用简单的措辞来解释这一切.所以,张量(Tensor)是什么,而且为什么会流动(Flow)? 目

[Pytorch]Pytorch中tensor常用语法

原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到这里,以防自己在使用PyTorch做实验时,忘记这些方法应该传什么参数. 总结的方法包括: Tensor求和以及按索引求和:torch.sum() torch.Tensor.indexadd() Tensor元素乘积:torch.prod(input) 对Tensor求均值.方差.极值: torch

使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 GPU 学习深度学习>系列文章的第二篇,主要介绍了 Tensorflow 的原理,以及如何用最简单的Python代码进行功能实现.本系列文章主要介绍如何使用 腾讯云GPU服务器 进行深度学习运算,前面主要介绍原理部分,后期则以实践为主. 往期内容: 使用腾讯云 GPU 学习深度学习系列之一:传统机器学

AI相关 TensorFlow -卷积神经网络 踩坑日记之一

上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是google开源出来的人工智能库,由python语言写的 官网地址:http://www.tensorflow.org/   请用科学上网访问 中文地址:http://www.tensorfly.cn/ 当然还有其他AI库,不过大多数都是由python 写的 .net 的AI库叫 Accord.net

Theano 学习笔记(1.搭环境 Anaconda + Theano + VS2010 + CUDA)

最近几天开始接触深度学习,鉴于深度学习对速度和GPU计算的要求以及在网络层数不断加深后求导计算的复杂度不断增加,打算搭建一个Theano平台(抛弃Matlab),仅供自己娱乐下(花式灌水)... 主要步骤: Theano之CPU计算 搭建CUDA & VS2010 Theano之GPU计算 1.Theano之CPU ONLY 安装Theano的条件: 需要安装Numpy,Scipy,Noise等等python的包.下载Anaconda(去官网下载这个http://www.continuum.io