首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Tensorflow学习笔记-基础知识

Tensorflow的基础知识

Tensorflow系统架构

Tensorflow的系统架构,自低向上分为设备层和网络层,数据操作层和图计算层,API层,应用层;其中设备层和网络层、数据操作层、图计算层是Tensorflow的核心计算层。

设计理念

Tensorflow的设计理念主要体现在以下两个方面:

(1)将图的定义和图的运行完全分开。因此,Tensorflow被认为是一个“符号主义”的库。

我们知道,编程模式通常分为命令式编程和符号式编程。命令式编程就是编写我们理解意义上的程序,很容易理解和调试,按照原有逻辑执行。符号式编程涉及很多嵌入和优化,不容易理解和调试,但运行速度相对有所提升。现有的深度学习框架中,Torch是典型命令式的,Caffe、MXNet采用了两种编程模式混合的方法,而Tensorflow完全采用符号式编程。

符号式编程计算一般是先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量之间的计算关系,最后需要对数据流图进行编译,但此时的数据流图还是一个空壳,里面没有任何实际的数据,只有把需要运算的输入放进去,才能在整个模型中形成数据流,从而形成输出值。

例如:

t = 8 + 9

print(t)

在传统的程序操作中,定义了t的运算,在运行时就执行了,并输出17,而在Tensorflow中,数据流图中的节点,实际上对应的是Tensorflow API中的一个操作,并没有真正去执行。

importtensorflowastf

t = tf.add(8, 9)

print(t) #输出Tensor("Add:0", shape=(), dtype=int32)

定义了一个操作,但实际上并没有运行。

(2)Tensorflow中涉及的运算都要放在图中,而图的运行只发送在会话(Session)中。开启会话后,就可以用数据去填充节点,进行运算;关闭会话后,就不能进行计算了。因此,会话提供了操作运行和Tensor求值的环境。

例如:

importtensorflowastf

"""

创建图

"""

a = tf.constant([1.0,2.0])

b = tf.constant([3.0,4.0])

c = a * b

"""

创建会话

"""

withtf.Session()assess:

print(sess.run(c))

sess.close()

编程模型

Tensorflow是用数据流图做的计算,因此我们先创建一个数据流图(也称为网络结构图),如图所示,看一下数据流图中的各个因素,

如图讲了Tensorflow的运行原理。图中包含输入(input)、塑形(reshape)、Relu层(Relu layer)、Logit层(Logit layer)、Softmax、交叉熵(cross entropy)、梯度(gradient)、SGD训练(SGD Trainer)等部分,是一个简单的回归模型。

它的计算过程是,首先从输入开始,经过塑形后,一层一层进行前向传播运算。Relu层(隐藏层)里面会有两个参数,即Wh1和bh1,在输出前使用Relu(Rectified Linear Units)激活函数做非线性处理。然后进入Logit层(输出层),学习两个参数Wsm和bsm。用Softmax来计算输出结果中各个类别的概率分布。用交叉熵来度量两个概率分布(源样本的概率分布和输出结果的概率分布)之间的相似性。然后开始计算梯度,这里是需要参数Wh1、bh1、Wsm、bsm,以及交叉熵后的结果,随后进入SGD训练,也就是反向传播过程,从上往下计算每一层的参数,依次进行更新。也就是说,计算和更新的顺序为bsm、Wsm、bh1和Wh1。

顾名思义,Tensorflow是指“张量的流动”。Tensorflow的数据流图是由节点(node)和边(edge)组成的有向无环图(directed acycline graph,DAG)。Tensorflow由Tensor和Flow两部分组成,Tensor(张量)代表了数据流图中的边,而Flow(流动)这个动作就代表了数据流图中节点所做的操作。

logistic的密度函数态视和分布函数动频(截取压缩版)

完整版请移步B站看单参数(μ为位置参数,γ为形状参数)变化以及位置参数和形状参数同时变化的情况

https://www.bilibili.com/video/av41580844/

好看请点这里~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190125G0154U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券