TensorFlow

TensorFlow 中Tensor是张量的含义,在TensorFlow中的含有被理解为多维数组,Flow体现了它的计算模型 。是通过计算图的形式来表达计算的编程系统,TensorFlow中的每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的依赖关系。
TensorFlow的程序一般可以分为两个阶段,在第一个阶段需要定义计算图中的所有的计算。第二个阶段为执行计算。

import tensorflow as tf
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([1.0,2.0],name = 'b')
result = a+b

在这个过程中,TensorFlow会自动将定义的计算转化为计算图上的节点,系统会自动维护一个默认的计算图,通过tf.get_default_graph可以获取当前默认的计算图。

#通过 a.graph可以查看张量所属的计算圈。因为没有特意指定,所以这个计算图应该等于当前默认的计算圈。所以下面这个操作输出值为 True
print(a.graph is tf.get_default_graph())

除了使用默认的计算图,Tensorflow支持通过tf.Graph函数来生成新的计算图。不同计算图上的张量和运算都不会共享。以下代码示意如何在不同计算图上定义和使用变量


张量

在tensorflow中 所有的数据都是通过张量的形式来表示,从功能上看,张量可以被简单的理解为多为数组。其中,零阶张量表示标量(scalar),也就是一个数,一阶张量为向量(vector),也就是一维数组,第n维阶张量可以理解为一个n维数组,但张量在Tensorflow中的实现并不是直接采用数组的形式,它只是对tensorflow中的运算结果的引用,在张量中并没有真正的保存数字。

import tensorflow as tf 
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([2.0,3.0],name  = 'b')
result = tf.add(a,b,name = 'add')
print(result)
输出:
Tensor("add:0", shape=(2,), dtype=float32)

上边的输出不是一个具体的数字,而是一个张量的结构。一个张量中主要保存了三个属性:名字(name)维度(shape)和类型(dtype)。
张量的第一个属性名字不仅是一个张量的唯一标识符,同样也是给出了一个张量是如何计算出来的。tensorflow的计算都可以通过计算图的模型来建立,而计算图上的每一个节点都代表了一个计算,计算的结果就保存在张量之中,所以,张量和计算图上节点所代表的计算结果是对应的。张量的命名就可以通过 node:src_output 的形式给出。其中node为节点的名称,src_output表示当前张量来自节点的第几个输出。比如上面代码打出的add:0,就说明了result这个张量是计算节点 add 输出的第一个结果(编号从0开始)。
张量的第二个输出是张量的维度,这个属性描述了一个张量的维度信息,上面实例中的shape = (2,)说明了张量result是一个一维数组,这个数组的长度维2。维度是张量一个重要的属性。
张量的第三个属性是类型(type),每一个张量会有一个唯一的类型,Tensorflow会对参与运算的所有的张量进行类型的检查,当发现类型不匹配时就会报错。

import tensorflow as tf 
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([1,2],name = 'b')
result = a+b

进行修改后:

import tensorflow as tf 
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([1,2],name = 'b',dtype = tf.float32)
result = a+b

如果不指定类型, TensorFlow 会给出默认的类型,比如不带小数点的数会被默认为 int32,带小数点的会默认为 float32 。 因为使用默认类型有可能会导致潜在的类型不匹配问题,所以一般建议通过指定 dtype 来明确指出变量或者常量的类型 。 TensorFlow 支持 14 种不同的类型, 主要包括了实数( tf.float32 、 tf.float64 )、整数( tf.int8 、 tf.intl 6 、 tf.int32 、 tf.int64 、 tf.uint8)、布尔型 (tf.bool) 和复数(tf.complex64 、tf.complex128 ) 。

张量的使用

TensorFlow 的计算模型相比, TensorFlow 的数据模型相对比较简单 。 张量使用主要可以总结为两大类 。第一类用途是对中间计算结果的引用 。 当一个计算包含很多中间结果时,使用张量可以大大提高代码的可读性。以下为使用张量和不使用张量记录中间结果来完成向量相加的功能的代码对比 。

a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([1,2],name = 'b',dtype = tf.float32)
result = a+b
#直接计算向量的和,这样可读性比较差
result = tf.constant([1.0,2.0],name =  'a')+tf.constant([1.0,3.2],name = 'b')
会话—tensorflow 运行模式

使用会话(session)来执行定义好的运算会话拥有并管理 TensorFlow 程序运行时的所有资源。所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄漏的问题。TensorFlow 中使用会话的模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,这种模式的代码流程如下。
初始化数据

https://cloud.tencent.com/developer/article/1065453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值