什么是Tensor

版权声明:流浪者 https://blog.csdn.net/gz153016/article/details/88692214

概要

  • tensor是tensorflow基础的一个概念–张量
  • tensorflow用到了数据流图,数据流图包括数据(DATA)、流(Flow)、图(Graph)
  • tensorflow里的数据用到的都是tensor,所以谷歌起名为tensorflow。

下面介绍张量几个比较重要的概念:
张量的维度(秩):RANK/ORDER

  • 0 (一个元素) Scalar 标量
  • 1 (1行x列) Vector 向量
  • 2 (2x2) Matrix 矩阵
  • 3 (3x3) 3D Array(3rd Tensor) 3 阶张量
  • N ND Arry N阶张量

小结
Rank为0、1、2时分别称为标量、向量和矩阵,Rank为3时时3阶张量,Rank大于3时时N阶张量。这些标量、向量、矩阵和张量里每一个元素被称为tensor element(张量的元素),且同一个张量里元素的类型是保持一致的。

Tensor属性
1、数据类型dtype d是data的首字母,type是类型的意思。tensor里面每一个元素的数据类型都是一致的。类似于Numpy中ndarry.dtype,tensorflow里数据类型可以有很多种,比如tf.float32就是32位的浮点数,tf.int8就是8位的整型,tf.string位字符串等等。
2、形状Shape类似于Numpy中的ndarry.shape,比方说一个2行3列的二维矩阵,他的形状就是2行3列。
3、其他属性device是tensor在那个设备上被计算出来,graph是tensor所属的图,name是tensor的名字。op是operation的缩写是产生这个tensor操作运算,对应图上的节点,这些节点接受一些tensor作为输入并输出一些tensor。还有一些属性,可以查阅官网。
tensor和numpy有很多共同的性质,tensorflow的作者应该参考了numpy(个人臆测)

几种Tensor

  • constant(常量)是值不能改变的一种tensor,定义在tf.constant这个类里。
    tf.constant()
    constant(value,
    dtype=None,
    shape=None,
    name=“Const”
    verify_shape=False)

    constant 中有几个属性,value就是constant的数值,我们可以给他赋值,比方说0维的scalar,1维的vector,2维的matrix或者是3维的张量。dtype、shape、name刚都有写过,verify_shape是布尔值,用于验证值得形状。除了value外都不一定要指定,可以有默认的值但是必须要有一个value。

  • Variable(变量)是值可以改变的一种tensor,定义在tf.Variable这个类中。构造函数如下图,也看不懂。。

__init__(
inital_value = None,
trainable = True
collections=None,
validate_shape=True,
caching_device=None,
varible_def = None,
dtype=None,
expected_shape=None,
import_scope=None,
constraint=None
)

-placeholder(占位符)先占住一个固定的位置,之后再往里面添加值得一种空Tensor。定义在tf.placeholder中。这里只有三个属性如下图。并没有value,因为赋值后就不是占位符了。只有dtype,shape,name三个属性。赋值的机制用到了python中字典,即feed_dict

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)

with tf.Session() as sess:
    print(sess.run(y))
    rand_array = np.random.rand(1024, 1024)
    print(sess.run(y, feed_dict = {x: rand_array}))

比刚说官网的例子定义了x占位符,数值类型是tf.float32,形状是1024*1024的二维矩阵。在用会话正式运行图的时候用feed_dict,首先给一个键后加真实的值。

  • SparseTensor(稀疏张量)是一种稀疏的Tensor,类似线代中稀疏矩阵。定义时只需要定义非0的数,其他数会自动填充。

const = tf.constant(3)
print(const)# Tensor(“Const:0”, shape=(), dtype=int32)

tf.Tensor就是名字,const是名字。0是索引,表示张量这个计算中产生的第几个。shape=()是形状,这个是标量所以为空,dtype为数据类型。

猜你喜欢

转载自blog.csdn.net/gz153016/article/details/88692214
今日推荐