赞
踩
类型 | 描述 | 用途 |
---|---|---|
Session | 会话 | 图必须在称之为“会话”的上下文中执行。会话将图的op分发到诸如CPU或者GPU上计算 |
Graph | 描述计算过程 | 必须在Session中启动 |
tensor | 数据 | 数据类型之一,代表多维数组 |
op | 操作 | 图中的节点被称之为op,一个op获得0或者多个Tensor,执行计算,产生0或者多个Tensor |
Variable | 变量 | 数据类型之一,运行过程中可以被改变,用于维护状态 |
feed | 赋值 | 为op的tensor赋值 |
fetch | 取值 | 从op的tensor中取值 |
Constant | 常量 | 数据类型之一,不可变 |
tensorflow的名字就已经表达了它的两个重要的概念:tensor,flow。其中tensor指的是张量,它表示了tensorflow的基本数据类型;flow的意思是“流”,表示了tensoflow的计算模型,即张量通过计算不断地进行进行转化。
tensorflow的一个计算就代表了一个数据节点,而节点与节点之间的边则描述了计算之间的关系
tensorflow的计算一般可以分为连个阶段:第一个阶段需要定义计算图中所有的计算,第二个阶段就是执行计算的阶段
构造阶段的主要目的是为了构建一张计算图.构建图的第一步是创建源op.源op不需要任何输入,源op的输出被传递给其他op作为输入.例如常量(Constant).在TensorFlow中存在一个默认图(defalut graph)。op构造器可以为其增加节。.很多时候我们会直接使用该图,可以通过tf.Graph.as_default()来获取。
方法 | 用途 |
---|---|
tf.Graph.as_graph_def() | 返回一个图的序列化的GraphDef,表示序列化的GraphDef可以导入到另外一个图(使用import_graph_def() ) |
tf.Graph.get_operations() | 返回图中的操作节点列表 |
tf.Operation.name | 操作节点op的名称 |
tf.Operation.type | 操作节点op的类型 |
tf.Operation.inputs | 操作节点的输入与输出 |
tf.Operation.run(session=None,feed_dict=None) | 在会话中执行该操作 |
tf.add_to_collection(name,value) | 基于默认的图,其功能便为Graph.add_to_collection() |
tf.get_collection(key,scope=None) | 基于默认的图,其功能便为Graph.get_collection() |
下面展示一些 graph的代码
。
import tensorflow as tf
t = tf. Graph
with t.as_dafault():
v = tf.get_Variable("v",initializer=tf.zeros_initializer(shape[1]))
tensor是Tensorflow中最基础的数据结构,可理解为n维数组或矩阵,一般将零维的张量称为标量或者常数,一维的张量可理解为向量,二维张量可理解为矩阵,三维则是三维数组。在计算的过程中,张量没有保存数字,而是保存了运算的过程,最后的得出的结果也是对运算结果的引用。
张量主要保存三种属性:
tf.Session().run(Tensor)
以下是tensor的定义
。
# constant函数的定义 constant(value, dtype=None, shape=None, name="Const", verify_shape=False) # 零维张量 import tensorflow as tf a = tf.constant(1,tf.float32,name='a') #一维张量 b = tf.constant([2,2,3],name='b') #二维张量 c = tf.constant([[2,2,3],[3,4,5]],tf.float32,name='c') #三维张量 d = tf.constant( [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10],[11, 12]] ],tf.float32,name='d')
首先我们需要创建一个Session对象.在不传参数的情况下,该Session的构造器将启动默认的图.之后我们可以通过Session对象的run(op)来执行我们想要的操作.
方法 | 用途 |
---|---|
tf.Session.run(fetches,feed-dict=Noe,options=Node,run_metadata=None) | 运行fetches中的操作节点并求其 |
tf.Session.close() | 关闭会话 |
tf.Session.graph | 返回加载该会话的图() |
tf.Session.as_default() | 设置该对象为默认会话,并返回一个上下文管理器 |
代码流程
sess = tf .Session()
sess.run()
sess.close
# 但一般会使用,以下方式
with tf.Session() as sess():
sess.run()
op指的是操作:接受多个输入,同时也有多个输出,他的数据类型一般是tensor,constant,variable
#对于tensor # 创建 tensor_name=tf.placeholder(type, shape, name) #对于variable # 创建变量 name_variable = tf.Variable(value, name) # 初始化单个变量 init_op=variable.initializer() # 初始化所有变量 init_op=tf.initialize_all_variables() # 更新操作 update_op=tf.assign(variable to be updated, new_value)
我们可以通过TensorFlow对象的placeholder()为变量创建指定数据类型占位符,在执行run(op)时通过feed_dict来为变量赋值
import tensorflow as tf
input_1 = tf.placeholder(tf.float32)
input_2 = tf.placeholder(tf.float32)
output = tf.add(input_1, input_2)
with tf.Session() as sess:
# 通过feed_dict来输入,outpu表示输出
print(sess.run([output],feed_dict={input_1:[7.],input_2:[2.]}))
方法 | 用途 |
---|---|
tf.train.Saver.save(sess,save_path,global_step=None,latest_filename=None,meta_graph_suffix=’meta’,write_meta_graph=True) | 保存变量 |
tf.train.Saver.restore(sess,save_path) | 恢复变量 |
tf.train.Saver.last_checkpoints() | 列出最近未删除的checkpoint文件名 |
tf.train.Saver.set_last_checkpoints(last_checkpoints) | 设置checkpoint文件名列表 |
tf.train.Saver.set_last_checkpoints_with_time(last_checkpoints_with_time) | 设置checkpoint文件名列表和时间戳 |
保存模型
import tensorflow as tf
def save_model():
v1 = tf.Variable(tf.random_normal([1, 2]), name="v1")
v2 = tf.Variable(tf.random_normal([2, 3]), name="v2")
init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
saver_path = saver.save(sess, "./model.ckpt")
print("model saved in file: ", saver_path)
加载模型,不需要进行变量的初始化
import tensorflow as tf
def load_model():
v1 = tf.Variable(tf.random_normal([1, 2]), name="v1")
v2 = tf.Variable(tf.random_normal([2, 3]), name="v2")
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess,"./model.ckpt")
print("mode restored")
variable在使用之前,一定要进行初始化,具体可以看op
【参考文献】
1.https://blog.csdn.net/dd864140130/article/details/71774229
2.https://blog.csdn.net/u010591976/article/details/82183676
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。