tnesorflow中文社区上介绍如下:
TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
Tensorflow可以理解一个开放源代码软件库,用于高性能数值计算。
Tensorflow概念
Tensorflow = tensor + flow
Tensor 张量:数据结构为多维数组
Flow 流:计算模型,张量之间通过计算而转换的过程
Tensorflow是一个通过计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的关系
对照着下图:
什么是数据流图(Data Flow Graph)?
数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。
简单来说
计算图是一个有向图,由以下内容构成:
一组节点,每个节点都代表一个操作,是一种运算
一组有向边,每条边代表节点之间的关系(数据传递和控制依赖)
Tensorflow具有两种边
实线表示的边:表示数值的流动方向,某个输入,某个输出
虚线的边:表示两个节点的控制相关性,某个节点执行完以后才会执行另外的一个节点
(图是不需要程序员写的,tensorbroad这个可以生成)
import tensorflow as tf
print(tf.__version__)
# 创建一个常值运算,将作为一个节点加入到默认计算图中
hello = tf.constant("Hello World")
# 创建一个TF对话
sess = tf.Session()
# 运行并获得结果
print(sess.run(hello))
import tensorflow as tf
# 一个简单的计算图
node1 = tf.constant(3.0,dtype=float,name="node1")
node2 = tf.constant(4.0,dtype=float,name="node2")
node3 = tf.add(node1,node2)
print(node3)
# 只是执行上述代码,输出的结果不是一个具体的数字,而是一个张量的结构
# Tensor("Add:0", shape=(), dtype=float32)
# 只有在创建流图(或计算图)后,也被称为建立计算模型之后,执行对话才能获取数据并获得结果
# 建立对话,并返回结果
sess = tf.Session()
print("执行sess.run(node1)的结果",sess.run(node1))
print("执行sess.run(node2)的结果",sess.run(node2))
print("执行sess.run(node3)的结果",sess.run(node3))
# 关闭session
sess.close()
上述可以总结tensorflow的编程使用方式
1.引入tensorflow库
2.定义tensorflow计算图(或者说模型)
3.建立会话session
4.通过session执行计算图