深度学习4:TensorFlow基础结构——Session,Variable,Placeholder,Optimizer
2018-01-25 16:15
351 查看
1.会话Session
参考http://blog.csdn.net/hanging_gardens/article/details/72784392
https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_pros.html
TensorFlow使用图Graph来表示计算任务,而会话Session是图Graph和执行者之间的媒介,图Graph必须在会话Session中被启动。
Session会持有和管理variables, queues或readers等资源,因此Session在使用完后需要关闭以释放资源。根据释放的方式,有两种Session创建方法:
(1) 明确调用会话的生成函数和关闭会话函数
#method 1 sess = tf.Session() sess.run(...) ... sess.close()
(2) 上下文管理机制自动释放所有资源
# #method 2 with tf.Session() as sess: sess.run(...) ...
示例:
import tensorflow as tf matrix1 = tf.constant([[3,3]]) ##矩阵1 matrix2 = tf.constant([[2],[2]]) ##矩阵2 product = tf.matmul(matrix1,matrix2) #矩阵乘法 # method 1 明确调用会话的生成函数和关闭会话函数 sess = tf.Session() result = sess.run(product) print(result) sess.close() # method 2 上下文管理机制自动释放所有资源 with tf.Session() as sess: ##sess自动close result2 = sess.run(product) print(result2)
两者输出结果相同。
TensorFlow中还有一个InteractiveSession类,比Session更加灵活,它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。
其使用方法和Session基本相同:
sess = tf.InteractiveSession()
Session和InteractiveSession的区别为:
Session在启动之前要构建整个计算图的操作,然后启动计算图,而InteractiveSession会加载它自身作为默认构建的session,然后再定义操作。例如:
sess = tf.InteractiveSession() a = tf.constant(5.0) b = tf.constant(6.0) c = a * b # We can just use 'c.eval()' without passing 'sess' print(c.eval()) sess.close()
2.变量Variable
参考https://www.cnblogs.com/greentomlee/articles/5566183.html
https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/
变量用于表示TensorFlow计算中的一个值,可以在计算过程中进行修改。变量需要通过Session初始化后才能在Session中使用。
对变量的操作如下:
(1) TensorFlow中,使用tf.Variable定义变量,在默认的图Graph中创建一个变量节点:
v1 = tf.Variable(<initial-value>, name=<optional-name>)
(2) 使用tf.constant定义常量:
v2 = tf.constant(<value>)
(3) 使用tf.add实现变量的加法操作:
v3 = tf.add(v1,v2)
(4) 使用tf.assign修改变量值:
v4 = tf.assign(v1,v3)
(5) 使用tf.initialize_all_variables对变量进行初始化:
init = tf.initialize_all_variables()
示例如下:
import tensorflow as tf state = tf.Variable(0,name = 'counter') #定义变量counter=0 one = tf.constant(1) #定义常量1 new_value = tf.add(state , one) #new_value = counter + 1 update = tf.assign(state,new_value) #counter = new_value init = tf.initialize_all_variables() #对变量进行初始化 with tf.Session() as sess: sess.run(init) for _ in range(3): sess.run(update) print(sess.run(state))
输出结果为:
1 2 3
3.输入值Placeholder
参考http://blog.csdn.net/zhangshaoxing1/article/details/68957896
https://www.cnblogs.com/Vulpers/p/7809276.html
Placeholder是TensorFlow的占位符,用于暂存变量提供数据供给(feeding)。
Placeholder声明格式如下:
input = tf.placeholder(type,shape,name)
参数1 type:要保存的数据类型,必填,TensorFlow中一般使用float32数据类型。
参数2 shape:要保存的数据结构,选填,如要存储一个1x2的矩阵,则为shape = [1 2]。
参数3 name:常量名,选填,默认根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2…….)
Placeholder被声明时是未初始化的,不包含要存储的数据值,如果没有为它供给数据,运行时会报错,因此运行时必须传入要存储的数据值。在运行时,可以使用feed_dict的字典结构给Placeholder提供数据。
示例如下:
import tensorflow as tf #在 Tensorflow 中需要定义 placeholder 的 type ,一般为 float32 形式 input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) # multiply 是将input1和input2 做乘法运算,并输出为 output output = tf.multiply(input1, input2) with tf.Session() as sess: print(sess.run(output,feed_dict={input1:[7.],input2:[2.]})) ##feed_dict提供数据 # [ 14.]
4.优化器Optimizer
参考https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/3-4-optimizer/
http://blog.csdn.net/shichaog/article/details/73123801
为了加速神经网络的训练,TensorFlow中提供了多种优化器如下。其中tf.train.Optimizer是基类,一般不会直接使用,常用的是GradientDescentOptimizer(梯度下降法优化器),AdagradOptimizer(Adagrad算法优化器),MomentumOptimizer(动量算法优化器)。
tf.train.Optimizer tf.train.GradientDescentOptimizer tf.train.AdadeltaOptimizer tf.train.AdagradOptimizer tf.train.AdagradDAOptimizer tf.train.MomentumOptimizer tf.train.AdamOptimizer tf.train.FtrlOptimizer tf.train.ProximalGradientDescentOptimizer tf.train.ProximalAdagradOptimizer tf.train.RMSPropOptimizer
相关文章推荐
- Tensorflow深度学习之四:placeholder和Session
- DeepLearning | Tensorflow编程基础:Session、Constant、Variable、Tensor、Placeholder、OP
- 深度学习基础(五):循环神经网络概念、结构及原理实现
- [深度学习]CNN的基础结构与核心思想
- 深度学习-基础概念:神经元(Neurons)、Sigmoid 函数与神经网络基本结构
- TensorFlow入门深度学习--01.基础知识
- tensorflow框架学习(一)placeholder 与variable
- [TensorFlow学习手记] 3 - Variable变量和Placeholder简单运用
- 【深度学习】tensorflow加载VGG16的网络结构和模型参数
- TensorFlow实现经典深度学习网络(5):TensorFlow实现自然语言处理基础网络Word2Vec
- 机器学习&深度学习基础(tensorflow版本实现的算法概述0)
- TensorFlow 学习积累(1):variable 和 placeholder
- TensorFlow Variable, Placeholder 以及激励函数学习小结
- Tensorflow深度学习之三:基础概念篇(矩阵相乘)
- 深度学习框架TensorFlow学习与应用(五)——TensorBoard结构与可视化
- Tensorflow实战学习(七)【Tensor、Graph、Op、Variable、占位符、Session、名称作用域、Board综合例子】
- 零基础深度学习笔记4——Win7-Tensorflow创建基本的数据流图
- 深度学习——tensorflow安装、简介及基础内容
- 机器学习实验(十二):深度学习之图像分类模型AlexNet结构分析和tensorflow实现
- 零基础深度学习笔记3——Win7-Tensorflow-GPU安装