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具体有哪些功能。
他强任他强!
- TensorFlow学习笔记(一):TensorFlow安装
- tensorflow学习笔记(一):tensorflow安装
- TensorFlow学习笔记(一)
- tensorflow学习笔记(一)
- TensorFlow学习笔记(一)
- TensorFlow学习笔记(一)
- Tensorflow学习笔记(一)
- tensorflow学习笔记(一)
- TensorFlow学习笔记(一)
- TensorFlow学习笔记(一)
- Tensorflow学习笔记(一)
- TensorFlow学习笔记(一)
- TensorFlow学习笔记(一)
- TensorFlow学习笔记(一)
- tensorflow学习笔记一
- TensorFlow学习笔记(一):快速安装与使用TensorFlow
- TensorFlow学习笔记(一补):使用Anaconda安装TensorFlow
- TensorFlow学习笔记(一):快速安装与使用TensorFlow
- mysql高可用架构方案之一(keepalived+主主双活)
- 初始Node.js
- 剑指offer----反转链表
- session_start():Session data file is not created by your uid
- J2EE性能优化(5)缓存Ehcache
- TensorFlow学习笔记(一)
- 内核_有用1
- 1.lamada教学-java8新特性
- Android Tint的使用及源码分析
- 大数据面试题记录
- android开发架构总结一——常用的第三方库
- Js控制台打印语句,取代alert的作用,又不阻塞程序执行
- HEML+CSS基础总结(长期更新)
- iOS 相机 麦克风 照片 权限的检测与获取