TensorFlow(1)-模型相关基础概念
TensorFlow-1
- 1.Graph对象
- 2.Session对象
- 3.Variabels变量
- 4. placeholders与feed_dict
- 5. tf.train.Saver() 模型参数保存、加载
Tensorflow 中文官网教程–2.0版本的官方教程
TensorFlow教程:TensorFlow快速入门教程(非常详细)
pytorch Vs tensorflow
Tensorflow来源: 由较低级别的符号计算库(例如: Theano) 和 较高级别的网络规范库(例如:Blocks 和 Lasagne)组合而成。
TensorFlow的劣势: 1.x API混乱冗余;2.x重点关注tf.keras,弃用其他API。但是1.x 和2.x 的兼容性堪忧。
TensorFlow的计算方式: 创建数据流图,将数据放入数据流图中计算。数据流图中的节点表示数学操作(op:operation),连线表示tensor 流动的通道。每个节点获得若干个tensor,执行计算后产生若干个tensor。数据流图在会话(Session)中启动运行。
import tensorflow as tf
1.Graph对象
计算图–可以认为是详细的流程图,其包括每一步的操作[op]和变量名字。
显式构建,graph构造函数无需接受任何参数
g = tf.Graph()
with g.as_default():#创建一些OP;它们将被添加到Graph的对象g中a = tf.mul(2,3)
隐式构建,当Tensorflow库被加载时,它会自动的创建一个Graph对象,并将 其作为默认的数据流图。获取默认数据流图具柄:
default_graph = tf.get_default_graph
2.Session对象
session负责分配资源,计算operation, 得出结果。 Session构造函数可接受3个参数。
- target 指定执行引擎,默认值为空字符串。在分布式训练中,用于连接不同的tf.train.server.
- graph 指定将要加载的Graph 对象, 默认值None(使用默认数据流图)。
- config 指定session 对象的配置参数,例如CPU、GPU使用数目、数据流图优化参数、日志选项等。
使用run 来运行相应的计算操作,得到fetches中的张量值。tf.Session.run()函数返回值为fetches指定的执行结果。如果fetches是一个元素就返回一个值;若fetches是一个list,则返回list的值,若fetches是一个字典类型,则返回和fetches同keys的字典。
session.run( fetches, feed_dict=None, options=None, run_metadata=None)
Session的开启涉及具体运算,比较消耗资源。在使用结束后,建议关闭Session。
-> 手动关闭关闭session
a = tf.constant(1, dtype=tf.int8)
b = tf.constant(2, dtype=tf.int8)
res= a + b
sess = tf.Session() # 加载默认数据流图
sess.run(res) # 执行运算
sess.close() # 手动关闭session
->自动关闭session 使用with来限定session 的作用范围
a = tf.constant(1, dtype=tf.int8)
b = tf.constant(2, dtype=tf.int8)
res= a + b
with tf.Session() as sess: # 运算结束后session自动关闭sess.run(res) # 执行运算res.eval() # tensor eval() 方法和 sess.run(res)效果一致
参考文档:TensorFlow中Session的使用
3.Variabels变量
Variabels 类型的参数可通过梯度下降更新、训练。必须明确的初始化而且可以通过Saver保存到磁盘上。
定义Variabels 类型的参数: 使用tf.Variable(tensor)封装相应的tensor
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
在graph 中若含有variabels 类型的变量,必须使用在session中显式调用 初始化函数。
-> 全量variable 初始化 tf.global_variables_initializer()
# 含有tf.Variable的环境下,因为tf中建立的变量是没有初始化的,
# 在debug时还不是一个tensor,而是一个Variable变量类型
tensor = tf.Variable(tf.random_normal(shape=[10]))
init = tf.global_variables_initializer()
with tf.Session() as sess:sess.run(init) # initialization variablesprint(sess.run(tensor))
-> 部分variable 初始化 tf.variables_initializer()
var1 = tf.Variable(0,name="initialize_me")
var2 = tf.Variable(1,name="no_initialization")
init = tf.variables_initializer([var1],name="init_var1")
with tf.Session() as sess:sess.run(init)
4. placeholders与feed_dict
tf.placeholder 创建占位符号,比如模型的输入数据,其只有在训练与预测时才会有值。赋值时,使用feed_dict 进行赋值操作。
import numpy as np
x = tf.placeholder(tf.float32, shape=(10, 10)) # 10行10列
y = tf.matmul(x, x) # 矩阵乘
with tf.Session() as sess: #print(sess.run(y)) # ERROR: 此处x还没有赋值. rand_array = np.random.rand(1024, 1024) print(sess.run(y, feed_dict={x: rand_array})) # Will succeed.
5. tf.train.Saver() 模型参数保存、加载
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
init = tf.initialize_all_variables()
# Add ops to save and restore all the variables.
saver = tf.train.Saver()# Later, launch the model, initialize the variables, do some work, save the variables to disk.
with tf.Session() as sess:sess.run(init)save_path = saver.save(sess, "/tmp/model.ckpt")print "Model saved in file: ", save_path
模型恢复时,variable 不需要初始化
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
saver = tf.train.Saver()# Later, launch the model, use the saver to restore variables from disk, and
# do some work with the model.
with tf.Session() as sess:saver.restore(sess, "/tmp/model.ckpt")print "Model restored."
TensorFlow(1)-模型相关基础概念相关推荐
- WiFi相关基础概念
转自:https://blog.csdn.net/lbaihao/article/details/73250798 一.WiFi相关基础概念 1.什么是wifi 我们看一下百度百科是如何定义的: Wi ...
- 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念
linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- linux驱动内核哪个文件夹,linux设备驱动归纳总结(一):内核的相关基础概念...
linux设备驱动归纳总结(一):内核的相关基础概念 1. 内核与 linux 设备驱动的作用与关系 内核:用于管理软硬件资源,并提供运行环境.如分配 4G 虚拟空间等. linux 设备驱动:是连接 ...
- 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念
linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- SEO究竟是什么?SEO的相关基础概念介绍
可能对于刚接触优化的新手来说,要明白SEO是什么,只有了解之后才能有进一步的学习以及提升.在互联网搜索引擎中,已经有了大量的相关资料以及定义.不同的人会用不同的语言来解释SEO是什么,但是最终的结果是 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
- 【tensorflow】tensorflow相关基础概念
参考极客时间 彭靖田老师:TensorFlow快速入门与实战 课程链接 0 数据流图 TensorFlow 是一个编程系统, 使用图来表示计算任务.图中每个节点称作operation. 通过一个可执行 ...
- DL相关基础概念-待补充
一.Deep Learning相关 来源于 深度学习-百度百科 1.1 深度学习 深度学习(DL,Deep Learning)是机器学习(ML,Machine Learning)领域中一个新的研究方向 ...
- 【认识 NVIDIA GPU】GPU相关基础概念介绍
系列文章目录 文章目录 系列文章目录 前言 基本概念 CUDA(Compute Unified Device Architecture) SP(Stream Processor) SM(Streami ...
最新文章
- python怎么发送代码文件_python 通过 socket 发送文件的实例代码
- 数据结构与算法:二分查找
- ceq c matlab,求一个函数MATLAB的编程,求大神指教。
- 计算机网路网络层之IP协议(4)——有类IP地址
- LAN7500 Mac OS X Device Driver
- 8000401a 因为配置标志不正确 错误及解决办法
- matlab 折线图 标记_matlab画折线图标记线
- 西瓜书第三章习题及答案
- 冰蝎(Behinder)双击无法打开
- 开源公告|腾讯tmagic-editor页面可视化编辑器对外开源
- 笔记本ghostwin10系统后只有C盘了别的盘的数据怎样找到
- RK3588 CPU GPU DDR NPU定频和性能模式设置
- 印象笔记 linux 命令行,在Linux的命令行下使用Evernote的教程
- oracle sql查询取整,Oracle SQL语句操作数字:取整、四舍五入及格式化
- 真是没想到!原来微信还有这么厉害的翻译功能,一键轻松翻译
- Selenium原理探秘
- 学一点SQL注入基础
- NIS (Network Information Service)
- Thirteen Day
- 4399笔试面试——感受
热门文章
- 冠榕智能灯光控制协议分析(node-controller)
- python归一化 增大差异_Python逻辑回归模型原理及实际案例应用
- grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探
- Java学习笔记—生产者和消费者模式
- idea查询类_Spring Security入门(三): 基于自定义数据库查询的认证实战
- 【转】2.1(译)关于async与await的FAQ
- 【转】刨根究底字符编码【2.0版】(3):字符编码的由来、演变与ASCII码
- 与计算机相关的课外活动,课外活动学生论文,关于应用型院校计算机专业课外活动相关参考文献资料-免费论文范文...
- sqlserver连接字符串_10分钟使用EF Core连接MSSQL数据库
- hypixel服务器免费低延迟ip,国服hypixel服务器ip