TensorFlow学习笔记(一)----基础知识

TensorFlow基础知识

  1. TensorFlow数据流图介绍

    • TensorFlow数据流图是一种声明式编程范式

      声明式编程与命令式编程的多角度对比

      编程范式核心思想程序抽象计算过程计算单元擅长领域实现方法
      声明式编程要什么数学模型表达式变换函数数理逻辑结构化、抽象化
      命令式编程怎么做有穷自动机状态转换指令业务逻辑过程化、具体化
    • TensorFlow数据流图

      TensorFlow数据流图

      TensorFlow数据流图的优势

      • 并行计算快(利用可执行队列和拓扑排序的思想)
      • 分布式计算快(CPUs, GPUs, TPUs)
      • 预编译优化(XLA)
      • 可移植性好
  2. 张量(Tensor)是什么

    • 张量表示某种相同数据类型多维数组

    • 张量是用来表示多维数据的;张量是执行操作时的输入或输出数据;用户通过执行操作来创建或计算张量;张量的形状不一定在编译时确定,可以在运行时通过形状推断计算得出。

    • TensorFlow中,有几类比较特别的张量,由以下操作产生:

      tf.constant           # 常量
      tf.placeholder        # 占位符
      tf.Variable           # 变量
      
  3. 变量(Variable)是什么

    • TensorFlow变量(Variable)的主要作用是维护特定节点的状态,如深度学习或机器学习的模型参数。

    • tf.Variable方法是操作,返回值的变量(特殊张量)。

      通过tf.Variable方法创建的变量,与张量一样,可以作为操作的输入与输出。不同之处在于:

      • 张量的生命周期通常随依赖的计算完成而结束,内存也随机释放。
      • 变量则常驻内存,在每一步训练时不断更新其值,以实现模型参数的更新。
    • TensorFlow变量使用流程

      TensorFlow变量使用流程

  4. 操作(Operation)是什么

    • TensorFlow用数据流图表示算法模型。数据流图由节点和有向边组成,每个节点均对应一个具体的操作。因此,操作是模型功能的实际载体
    • 数据流图中的节点按照功能不同可以分为3种:
      • 存储节点:有状态的变量操作,通常用来存储模型参数;
      • 计算节点:无状态的计算或控制操作,主要负责计算逻辑表达或流程控制;
      • 数据节点:数据的占位符操作,用于描述图外输入数据的属性。
    • 注:操作的输入和输出是张量或操作(函数式 编程)
    • TensorFlow使用占位符操作表示图外输入的数据,如训练和测试数据。
  5. 会话(Session)是什么

    • 会话提供了估算张量和执行操作的运行环境,它是发放计算任务的客户端,所有计算任务都由它连接的执行引擎完成。一个会话的典型使用流程分为以下3步:

      sess = tf.Session(target=...,graph=...,config=...) # 1.创建会话
      sess.run(...)                                      # 2.估算张量或执行操作
      sess.close()                                       # 3.关闭会话
      
      参数名称功能说明
      target会话连接的执行引擎
      graph会话加载的数据流图
      config会话启动时的配置项
    • 获取张量值的另外两种方法:估算张量(Tensor.eval)与执行操作(Operation.run)

      import tensorflow as tf
      x = tf.placeholder(tf.float32)
      W = tf.Variable(1.0)
      b = tf.Variable(1.0)
      y = W * x + b
      with tf.Session() as sess:
          tf.global_variables_initializer().run()   # Operation.run
          fetch = y.eval(feed_dict={x:3.0})         # Tensor.eval
          print(fetch)
      
    • TensorFlow会话执行原理

      当我们调用sess.run(op)语句执行训练操作时:

      • 首先,程序内部提取操作依赖的所有前置操作。这些操作的节点共同组成一幅子图;
      • 然后,程序会将子图中的计算节点、存储节点和数据节点按照各自的执行设备分类,相同设备上的节点组成了一幅局部图;
      • 最后,每个设备上的局部图在实际执行时,根据节点间的依赖关系将各个节点有序地加载到设备上执行。
    • TensorFlow会话本地执行

      对于单机程序来说,相同机器上不同编号的CPU或GPU就是不同的设备,我们可以在创建节点时指定执行该节点的设备。

      # 在0号CPU执行的存储节点
      with tf.device("/cpu:0"):
          v = tf.Variable(...)
      # 在0号GPU执行的计算节点
      with tf.device("/gpu:0"):
          z = tf.matmul(x, y)
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值