zoukankan      html  css  js  c++  java
  • Tensorflow01-认识张量Tensor

    Tensorflow2.0特性

    相较于1.0,tensorflow2.0是一次重大革命性的改进,主要是以下几个方面。

    (1)1.0 使用的是静态图机制,即分为构建阶段和部署阶段,构建阶段只描述了计算图,并没有实质的进行计算,而是在执行阶段中,在会话层进行统一的一次性计算,优点是高效节省资源,却没有中间结果,程序不够简洁,不宜调试。

    2.0 默认使用的是动态图机制,可以立刻执行计算并返回结果,所以可以快速的建立和调试模型。但也可以指定静态图机制提高效率。2.0的方法是:兼顾易用性和执行效率,在程序调试阶段使用动态图,快速建立模型、调试程序;在部署阶段,采用静态图机制,从而提高模型的性能和部署能力。

    (2)1.0有很多重复冗余的API,不利于程序共享,维护成本高。2.0 清理、整合了重复的API,将tf.keras作为构建和训练模型的标准高级API

    (3)将 Eager Execution 作为默认执行模式。

    张量 

    Tensorflow 中张量是由 Tensor 类实现,每个张量都是一个 Tensor 对象。

    其实,张量就是多维数组,像是 python 自带的列表 list,numpy 中的数组对象 ndarray,他们都可以作为数据的载体,但他们之间也有一些区别:

    python 中的列表(list):

    • 元素可以使用不同的数据类型,可以嵌套
    • 在内存中不连续存放,是一个动态的指针数组
    • 读写效率低,占用内存空间大
    • 没有shape属性,不适合做数值计算

    numpy数组(ndarray):

    • 专门为高维数据浮点运算而设计
    • 数组内所有元素数据类型相同
    • 每个元素在内存中占用的空间相同,存储在一个连续的内存区域中
    • 存储空间小,读取和写入速度快在CPU中运算,不能够主动检测、利用GPU进行运算

    Tensorflow张量(Tensor):

    • 为实现大规模深度学习应用而产生
    • 可以高速运行于GPU和TPU之上
    • 支持CPU、嵌入式、单机多卡和多机多卡等多种计算环境
    • 高速的实现神经网络和深度学习中的复杂算法

    为了降低初学者的难度,TensorFlow的基本运算、参数命名、运算规则、API的设计等与NumPy非常相近,所以有了numpy 的基础,tensorflow是很容易入手的。

    1、创建张量

    下面对三种 value 参数:数字,python原生列表,numpy数组 分别给出详细说明。

    (1)参数为 python 列表

    其中,id是张量的序号,由系统自动按顺序给出。

     numpy()

    通过numpy() 得到张量对应的 numpy 数组,通过 type(a) ,可以知道这是一个 eager 模式的张量。

    (2)参数为数字 

     张量元素的数据类型

    在创建张量时,指定元素的数据类型。

    # 要使用 tf.数据类型,否则报错
    tf.constant(1.0, dtype=tf.float32)
    <tf.Tensor: shape=(), dtype=float32, numpy=1.0>

    (3)参数为numpy数组

    改变张量中元素的数据类型:tf.cast(x, dtype)

     (4)参数为布尔类型

    (5)参数为字符串

     2、创建张量还可以使用函数 tf.convert_to_tensor() 函数

     可以使用 tf.is_tensor()函数判断是否是张量对象。

     也可以使用python函数,isinstance()函数,判断指定对象是否属于指定的类。

     3、创建全0张量 和 全1张量

    注意:shape 可以用 圆括号 或 方括号,(2, 1) 或 [2, 1]

     4、创建元素值都相同的张量

    • tf.fill(dims, value) : dims 就是形状
    • tf.constant(value, shape) 

    为了避免混淆,建议使用时加上参数。

    5、创建随机数张量

    tensorflow 中使用 tf.random 模块创建随机数张量,包括正态分布、截断正态分布、均匀分布张量等。

    (1)正态分布

     注:只说明第一个参数 shape 时,则默认创建标准正态分布,即 均值为 0,标准差为 1.

    (2)截断正态分布

     返回的是一个截断的正态分布,截断的标准是2倍的标准差

    (3)设置随机种子

    我们在使用 tf.random 模块生成随机张量时,可以通过tf.random.set_seed() 函数设置随机数种子,相同的种子可以产生相同的值。

    (4)创建均匀分布

    (5)随机打乱张量

    可以使用函数 tf.random.shuffle() 函数随机打乱传入参数的第一维数据。 

     5、创建序列

    和 python 、numpy中的range函数一样,tensorflow 可以使用 range() 创建一段序列张量。

     张量(Tensor)对象的属性

    ndim、shape、dtype:维度、形状、数据类型。

     获取Tensor对象的形状、元素总数 和 维度

     

    以上便是tensorflow中的张量介绍。

  • 相关阅读:
    UML设计
    Scrum冲刺阶段1
    Alpha项目冲刺
    系统设计
    需求分析
    团队选题与审计
    奶酪好吃吗
    功能规格说明书
    出出出出出题器测试
    出题器2.0
  • 原文地址:https://www.cnblogs.com/dongao/p/14333300.html
Copyright © 2011-2022 走看看