zoukankan      html  css  js  c++  java
  • tensorflow语法

    TensorFlow是一个编程系统,使用图来表示计算任务,图中的节点被称作op(operation的缩写),一个op获得0个或者多个Tensor,执行计算,产生0个或者多个Tensor,每个tensor是一个类型的多维数组。例如,你可以将一小组图像集表示为一个四维浮点数数字,这四个维度分别是[batch,height,width,channels]。一个TensorFlow图描述了计算的过程,为了进行计算,图必须在会话里启动,会话将图的op分发到诸如CPU或者GPU的设备上,同时提供执行op的方法,这些方法执行后,将产生的tensor返回,在python语言中,返回的tensor是numpy array对象,在C或者C++语言中,返回的tensor是tensorflow:Tensor实例。

    2.计算图

    TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤被描述成一个图, 在执行阶段, 使用会话执行执行图中的 op。例如, 通常在构建阶段创建一个图来表示训练神经网络, 然后在执行阶段反复执行图中的训练 op。

    TensorFlow 支持 C, C++, Python 编程语言. 目前, TensorFlow 的 Python 库更加易用, 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被C 和 C++ 库支持。三种语言的会话库 (session libraries) 是一致的。

    3.构建图

    构建图的第一步, 是创建源 op (source op), 源 op 不需要任何输入, 例如 常量 (Constant), 源 op 的输出被传递给其它 op 做运算。

    Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入。

    TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点. 这个默认图对 许多程序来说已经足够用了. 阅读 Graph 类 文档来了解如何管理多个图。

    例子如下

    # -*- coding: utf-8 -*-
    """
    Created on Sat Mar 31 16:54:02 2018
    
    @author: Administrator
    """
    
    #TensorFlow第一节
    
    import tensorflow as tf
    
    '''
    构建阶段:op 的执行步骤被描述成一个图
    '''
    
    #创建一个常量op,产生一个1 x 2矩阵,这个op被称做一个节点,加到默认图中,构造器的返回值代表常量op的输出
    matrix1 = tf.constant([[3.,3.]])
    
    #创建另一个常量op。产生一个2 x 1的矩阵
    matrix2 = tf.constant([[2.],[2.]])
    
    #创建一个矩阵乘法 matmul op,把matrix1和matrix2作为输入
    product = tf.matmul(matrix1,matrix2)
    
    '''
    默认图现在有三个节点,两个常量 constant() op和一个 matmul() op,wile真正进行矩阵相乘运算,并得到矩阵
    乘法的结果,你必须载会话中启动这个图
    '''
    '''
    执行阶段:使用会话执行执行图中的 op.
    '''
    #构造阶段完成后,才能启动图,启动图的第一步是创建一个Session对象,如果无任何创建函数,会话构造器将启动默认图
    sess = tf.Session()
    
    '''
    调用sess的run()方法来执行矩阵乘法op,传入product作为该方法的参数,上面提到,product代表矩阵乘法op的输出
    #传入它是向方法表明,我们希望取回矩阵乘法op的输出
    整个执行过程是自动化的,会话负责传递op所需的全部输入,op通常是并发执行的
    函数调用run(product)触发了图中三个op的执行
    返回值result是一个numpy.ndarray对象
    '''
    
    result = sess.run(product)
    print(result)                         #[[ 12.]]
    
    #任务完毕,关闭会话,Session对象在使用完毕后需要关闭以释放资源,除了显示调用close()外,也可以使用with代码块
    sess.close()
    
    
    '''
    在实现上, TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU).
    一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测. 如果检测到 GPU, TensorFlow 会尽
    可能地利用找到的第一个 GPU 来执行操作.
    如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的. 为了让 TensorFlow 使用
    这些 GPU, 你必须将 op 明确指派给它们执行. with...Device 语句用来指派特定的 CPU 或 GPU 执行操作:
    '''
    
    '''
    设备用字符串进行标识. 目前支持的设备包括:
        "/cpu:0": 机器的 CPU.
        "/gpu:0": 机器的第一个 GPU, 如果有的话.
        "/gpu:1": 机器的第二个 GPU, 以此类推.
    '''
    with tf.Session() as sess:
        with tf.device("/cpu:0"):
            print(sess.run(product))             #[[ 12.]]
            
            
    '''
    交互式使用
    文档中的python实例使用一个会话Seesion来启动图,并调用Session.run()方法执行操作
    为了方便使用诸如IPython之类的Python交互环境,可以使用InteractiveSession替代Session类,使用Tensor.eval()
    和Operation.run()方法来代替Session.run(),这样可以避免使用一个变量来持有会话
    '''
    #进入一个交互式TensorFlow会话
    sess = tf.InteractiveSession()
    
    x = tf.Variable([1.0,2.0])
    a = tf.constant([3.0,3.0])
    
    #使用初始化器 initinalizer op的run()初始化x
    x.initializer.run()
    
    #增加一个减去sub op,从 x 减去 a,运行减去op,输出结果
    sub = tf.subtract(x,a)
    print(sub.eval())               #[-2. -1.]
  • 相关阅读:
    webuploader 上传文件参数设置
    数据库报插入异常
    System.Threading.Timer 定时器的用法
    JSON 获取属性值的方法
    JAVA Socket 编程学习笔记(二)
    JAVA Socket 编程学习笔记(一)
    JAVA 判断Socket 远程端是否断开连接
    JAVA 多线程和并发学习笔记(四)
    JAVA 多线程和并发学习笔记(三)
    巧用transform实现HTML5 video标签视频比例拉伸
  • 原文地址:https://www.cnblogs.com/520520520zl/p/14259352.html
Copyright © 2011-2022 走看看