TensorFlow学习笔记(一)

来源:互联网 发布:接口数据模拟器 编辑:程序博客网 时间:2024/04/30 09:36

之前懒于做笔记,慢慢觉得做笔记能够对加深知识的理解,因为写出来,就像与人交流,想要说清楚,就得自己考虑清楚,闲话少说,因为老师突然要研究下TensorFlow,之前毕业的师兄也曾经推荐过,所以拿来学习学习,是为拿来回顾以及与诸君分享,望诸君指正!

TensorFlow:张量流,是一个基于有向图的计算系统,图(Graph)包含节点、以及边,按我的理解:对于TensorFlow来说,图的节点就是一些操作(加减乘除或者起来函数),图的边是给节点(也就是对于数据的操作)操作供给的一些数据流(即为Tensor),图呢就是描述了整个数据的计算流程,这是我的直观理解。
学习TensorFlow是直接在官网上下载安装,描述的很清楚,英文也简单,能读懂。
首先导入TensorFlow模块

import tensorflow as tf

既然基于图的,先建立两个节点node1,node2

node1 = tf.constant(3.0,tf.float32)node2 = tf.constant(4.0)print(node1,node2)

然后你会发现结果是这样的:

Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)

看结果像是node1,node2 的属性之类,也就是说我们直接打印node1,node2可以得出,这两个节点代表的就像是一个产生器,产生的是常数,类型是float32。类型可以自己指定有float32,int32,int64,double等,默认的是,和你设置的数值有关,例如你设置数值为4,默认为int 若是4.0默认为float。
然后就想到怎么打印出它的值呢?于是就出现了Session,先看代码和结果:

sess = tf.Session()print(sess.run([node1,node2]))

结果:[3.0, 4.0]
好,取得了它的值了,那么这个Session是个什么鬼?官方说是:A class for running TensorFlow operations,这是一个类,执行TensorFlow的operations。它里边定义了方法run(),extend()close(),__init__()等方法。
Session的构造函数如下:

tf.Session.__init__(target='', graph=None, config=None)

其实Session 就是用户使用TensorFlow时交互的接口。用户可以通过Session的Extend()创建新的边和节点,用来创建新的图, 随后就可以通过run() 方法执行:我们输入节点和输入数据。

若创建Session时没有指定Graph,会加载默认的Graph。自然的若一个进程中有多个图,我们就需要定义创建不同的Session来加载不同的图,对于同一个Graph可以加载不同的Session。

还是在应用中学习,一个类中会定义许多的方法,用到哪个查找就行了,回到代码,类似于c++,对于一个类,需要实例化,所以有sess = tf.Session()sess就是创建的Session类的实例。接下来就是sess.run() 获取得到输入节点和输入数据。
言而总之,Seesion就是一个用于用户交互的一个类。类内定义的方法可以创建图,可以执行计算图等等。
再定义一个节点node3,也可以理解为定义一个操作(Operation),定义一个加的操作。

node3 = tf.add(node1,node2)print("node3:",node3)print("sess.run(node3):",sess.run(node3))

它的结果为:

node3: Tensor("Add:0", shape=(), dtype=float32)sess.run(node3) =  7.0

可以简单地理解为如图所示,

假如我们需要执行很多次add操作,我们会需要一个表达式也就是,有一个式子:adder = a + b; adder是求和之后的结果,a b是参数。
TensorFlow里面提供了一个placeholder()函数,我们可以通过它定义参数,然后喂给sess.run()一个参数字典,就可以获得两个数或者两个向量的和。简化流程。
代码如下:

a = tf.placeholder(tf.float32)b = tf.placeholder(tf.float32)adder_node = a + b  

打印结果:

print(sess.run(adder_node, {a: 3, b:4.5}))print(sess.run(adder_node, {a: [1,3], b: [2, 4]}))

盗用官方的一张图,就是像下图所示
这里写图片描述
这是安装TensorFlow之后的一个简单的尝试与了解,明天希望能够搞明白TensorFlow的实现原理以及了解掌握TensorFlow具体有哪些功能。

他强任他强!

0 0
原创粉丝点击