tensorflow 转张量类型为float_TensorFlow 零基础入门指南

作者:来自读者投稿

来源:Python数据之道

TensorFlow 零基础入门指南

TensorFlow 是一个开发源代码软件库,它可以进行高性能的数值计算与分析,借助其灵活的架构,可以将其部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、移动设备、集群)。TensorFlow 为机器学习和深度学习提供了很多强有力的支持,本篇文章小编为大家整理了很多 TensorFlow 的基础编程知识,非常适合初学者学习,一起来看看吧!

1、 TensorFlow 计算模型

TensorFlow 顾名思义,是由 Tensor + Flow 组成,Tensor 叫做张量,主要起到数据结构的作用,Flow 叫做流,用来表示计算模型,即张量之间通过计算而转换的过程 。TensorFlow 是一个提供计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述的计算之间的关系。

计算图的实例

#一个简单的计算图node1 = tf.constant(3.0,tf.float32,name="node1")node2 = tf.constant(4.0,tf.float32,name="node2")node3 = tf.add(node1,node2)print(node3)

该代码输出结果为:

Tensor( "Add:0", shape( ), dtype = float32 )

要注意的是,这里输出的结果不是一个具体的数字,而是一个张量的结构。

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第1张图片

计算图的执行

创建计算图只是建立了静态的计算模型,只有执行对话才能提供数据并获得结果。

#建立对话并显示运行结果sess = tf.Session()print("运行sess.run(node3)的结果是:", sess.run(node3))#关闭sessionsess.close()

该代码输出结果为:运行 sess.run (node3) 的结果是:7.0

2、 Tensor 张量

在 TensorFlow 中,所有的数据都通过张量的形式来表示。

张量可以简单的理解为多维数据:

  • 零阶张量表示标量,即一个数;
  • 一阶张量表示想来,即一维数组;
  • n阶张量表示n维数组;

张量没有真正保存数字,它保存的只是计算过程。

张量的属性

Tensor( "Add:0", shape( ), dtype = float32 )

由名字 name,形状 shape 和类型 type 三部分组成:

  • 名字(name):node : src_output
  • 形状(shape):张量的维度信息,当shape=()时,表示标量
  • 类型(type): 每个张量都会有一个唯一的类型

张量的形状

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第2张图片

例如:

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第3张图片

张量的阶

张量的阶表示了张量的维度

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第4张图片

阶为1的张量等价于向量;

阶为2的张量等价于矩阵,通过 t [ i, j ]获取元素;

阶为3的张量,通过 t [ i, j, k ]获取元素。

张量的类型

TensorFlow 支持14种类型:

  • 实数:tf.float32,tf.float64
  • 整数:tf.int8,tf.int16,tf.int32,tf.int64,tf.uint8
  • 布尔:tf.bool
  • 复数:tf.complex64,tf.complex128

注意:不带小数点的数会被默认为int32,带小数点的会被默认为float32.

import tensorflow as tfa = tf.constant([1,2], name="a")b = tf.constant([2.0,3.0], name="b")result = a + b
960c603b9e5e3d3613b9914a7f307e7c.png

该代码运行会报错,因为 TensorFlow 会对参与运算的所有张量进行类型的检查,发现类型不匹配时就会报错。

3、 Operation 操作

计算图中的节点就是操作

  • 一次加法是一个操作
  • 一次乘法也是一个操作
  • 构建一些变量的初始值也是一个操作

每个运算操作都是属性,它在构建图的时候需要确定下来

操作之间存在顺序关系,这些操作之间的依赖就是 “边”。

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第5张图片

4、 Session 会话

会话拥有并管理 TensorFlow 程序运行时的所有资源,当所有计算完成之后需要关闭会话帮助系统回收资源。

会话的模式

import tensorflow as tf#定义计算图a = tf.constant([1,2,3])#创建一个会话sess = tf.Session()#使用这个创建好的会话来得到关心的运算结果print(sess.run(a))#关闭会话使得本次运行中使用的资源可以被释放sess.close()

这里需要注意的是:调用Session.close( )函数来关闭会话并释放资源,当程序因为异常退出时,关闭会话函数可能就不会被执行从而导致资源泄露。

因此以下代码可以避免该问题:

import tensorflow as tf#定义计算图a = tf.constant([1,2,3])#创建一个会话,并通过python中的上下文管理器来管理该会话with tf.Session() as sess:    #使用这个创建好的会话来得到关心的运算结果    print(sess.run(a))#关闭会话使得本次运行中使用的资源可以被释放#当上下文退出时会话关闭,资源释放

交互式环境下设置默认会话

在交互式环境下,python 脚本或者 Jupyter 编辑器,通过设置默认会话来获取张量的取值更加方便。

tf.InteractiveSession 使用这个函数会自动将生成的会话注册为默认会话

node1 = tf.constant(3.0,tf.float32,name="node1")node2 = tf.constant(4.0,tf.float32,name="node2")node3 = tf.add(node1,node2)sess = tf.InteractiveSession()print(node3.eval())sess.close()

5、 常量与变量

常量 constant

常量是在运算过程中值不会改变的单元,在 TensorFlow 中无需进行初始化操作

常量的创建语句为:

constant_name = tf.constant(value)

变量 Variable

变量是在运行过程中值会改变的单元,在 TensorFlow 中需要进行初始化操作

变量的创建语句为:

variable_name = tf.Variable (value, name)

个别变量初始化:

init_op = variable_name.initializer( )

所有变量初始化:

init_op = tf.global_variable_initializer( )
tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第6张图片

注意:使用了 Variable 变量类型,不进行初始化数值会出现运行错误。

6、 占位符 placeholder

TensorFlow 中的 Variable 变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入,比如训练数据,这时需要用到占位符。

tf.placeholder 占位符,是 TensorFlow 中特有的一种数据结构,类似于动态变量或函数的参数。

占位符的函数接口如下:

tf.placeholder(dtype, shape = None, name = None)
#此代码生成一个2*3的二维数组,矩阵中每个元素类型都是tf.float32x = tf.placeholder(tf.float32,[2,3],name="tx")

如果构建了一个包含 placeholder 操作的计算图,当在 session 中调用run 方法时,placeholder 占用的变量必须通过 feed_dict 参数传递进去,否则会报错。

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第7张图片

7、 TensorBoard 可视化

TensorBoard 是TensorFlow 的可视化工具

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第8张图片

通过 TensorFlow 程序运行过程中输出的日志文件可视化 TenorFlow 程序的运行状态。

在 TensorBoard 中查看图结构

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第9张图片

运行之后会在指定目录里产生日志文件

e72c80ce862847816891e986d19779a5.png

启动 TensorBoard

TensorBoard 不需要额外安装,在 TenorFlow 安装时已经自动完成。

在 Anaconda Prompt 中先进入日志存放的目录,再运行 TensorBoard,并将日志地址指向程序日志输出的地址。

命令:

tensorboard --logdir=/path/log

在浏览器访问网址:http://localhost:6006

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第10张图片

TensorBoard 常用API

tensorflow 转张量类型为float_TensorFlow 零基础入门指南_第11张图片

---------End---------

你可能感兴趣的:(tensorflow,转张量类型为float,tensorflow计算图,查看tensorflow,ps模式下通信的node)