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.]

 

posted @ 2021-01-10 20:06  凋零_(  阅读(131)  评论(0编辑  收藏  举报