Tensorflow |(3)变量的的创建、初始化、保存和加载
Tensorflow |(1)初识Tensorflow
Tensorflow |(2)张量的阶和数据类型及张量操作
Tensorflow |(3)变量的的创建、初始化、保存和加载
变量的的创建、初始化、保存和加载
其实变量的作用在语言中相当,都有存储一些临时值的作用或者长久存储。在Tensorflow中当训练模型时,用变量来存储和更新参数。变量包含张量(Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。值可在之后模型训练和分析是被加载。
Variable类
tf.Variable.init(initial_value, trainable=True, collections=None, validate_shape=True, name=None)
创建一个带值的新变量initial_value
initial_value:A Tensor或Python对象可转换为a Tensor.变量的初始值.必须具有指定的形状,除非 validate_shape设置为False.
trainable:如果True,默认值也将该变量添加到图形集合GraphKeys.TRAINABLE_VARIABLES,该集合用作Optimizer类要使用的变量的默认列表
collections:图表集合键列表,新变量添加到这些集合中.默认为[GraphKeys.VARIABLES]
validate_shape:如果False允许使用未知形状的值初始化变量,如果True,默认形状initial_value必须提供.
name:变量的可选名称,默认'Variable'并自动获取
变量的创建
创建当一个变量时,将你一个张量作为初始值传入构造函数Variable().TensorFlow提供了一系列操作符来初始化张量,值初始的英文常量或是随机值。像任何一样Tensor,创建的变量Variable()可以用作图中其他操作的输入。此外,为Tensor该类重载的所有运算符都被转载到变量中,因此您也可以通过对变量进行算术来将节点添加到图形中。
x = tf.Variable(5.0,name="x")
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
调用tf.Variable()向图中添加了几个操作:
- 一个variable op保存变量值。
- 初始化器op将变量设置为其初始值。这实际上是一个tf.assign操作。
- 初始值的ops,例如 示例中biases变量的zeros op 也被添加到图中。
变量的初始化
- 变量的初始化必须在模型的其它操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。最常见的初始化模式是使用便利函数 initialize_all_variables()将Op添加到初始化所有变量的图形中。
init_op = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init_op)
- 还可以通过运行其初始化函数op来初始化变量,从保存文件还原变量,或者简单地运行assign向变量分配值的Op。实际上,变量初始化器op只是一个assignOp,它将变量的初始值赋给变量本身。assign是一个方法,后面方法的时候会提到
with tf.Session() as sess:sess.run(w.initializer)
通过另一个变量赋值
你有时候会需要用另一个变量的初始化值给当前变量初始化,由于tf.global_variables_initializer()初始化所有变量,所以需要注意这个方法的使用。
就是将已初始化的变量的值赋值给另一个新变量!
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")w2 = tf.Variable(weights.initialized_value(), name="w2")w_twice = tf.Variable(weights.initialized_value() * 0.2, name="w_twice")
所有变量都会自动收集到创建它们的图形中。默认情况下,构造函数将新变量添加到图形集合GraphKeys.GLOBAL_VARIABLES。方便函数 global_variables()返回该集合的内容。
属性
name
返回变量的名字
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")
print(weights.name)
op
返回op操作
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35))
print(weights.op)
方法
assign
为变量分配一个新值。
x = tf.Variable(5.0,name="x")
w.assign(w + 1.0)
eval
在会话中,计算并返回此变量的值。这不是一个图形构造方法,它不会向图形添加操作。方便打印结果
v = tf.Variable([1, 2])
init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)# 指定会话print(v.eval(sess))# 使用默认会话print(v.eval())
变量的静态形状与动态形状
TensorFlow中,张量具有静态(推测)形状和动态(真实)形状
- 静态形状:
创建一个张量或者由操作推导出一个张量时,初始状态的形状
- tf.Tensor.get_shape:获取静态形状
- tf.Tensor.set_shape():更新Tensor对象的静态形状,通常用于在不能直接推断的情况下
- 动态形状:
一种描述原始张量在执行过程中的一种形状
- tf.shape(tf.Tensor):如果在运行的时候想知道None到底是多少,只能通过tf.shape(tensor)[0]这种方式来获得
- tf.reshape:创建一个具有不同动态形状的新张量
要点
1、转换静态形状的时候,1-D到1-D,2-D到2-D,不能跨阶数改变形状
2、 对于已经固定或者设置静态形状的张量/变量,不能再次设置静态形状
3、tf.reshape()动态创建新张量时,元素个数不能不匹配
4、运行时候,动态获取张量的形状值,只能通过tf.shape(tensor)[]
管理图中收集的变量
tf.global_variables()
返回图中收集的所有变量
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35))print(tf.global_variables())
Tensorflow |(3)变量的的创建、初始化、保存和加载相关推荐
- TensorFlow学习笔记——使用TFRecord进行数据保存和加载
本篇文章主要介绍如何使用TensorFlow构建自己的图片数据集TFRecord的方法,并使用最新的数据处理Dataset API进行操作. TFRecord TFRecord数据文件是一种对任何数据 ...
- keras中的模型保存和加载
tensorflow中的模型常常是protobuf格式,这种格式既可以是二进制也可以是文本.keras模型保存和加载与tensorflow不同,keras中的模型保存和加载往往是保存成hdf5格式. ...
- TensorFlow 教程 --进阶指南--3.2变量:创建、初始化、保存和加载
变量:创建.初始化.保存和加载 当训练模型时,用变量来存储和更新参数.变量包含张量 (Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘.这些变量的值可在之 ...
- TensorFlow模型保存和加载方法
TensorFlow模型保存和加载方法 模型保存 import tensorflow as tfw1 = tf.Variable(tf.constant(2.0, shape=[1]), name=& ...
- numpy将所有数据变为0和1_PyTorch 学习笔记(二):张量、变量、数据集的读取、模组、优化、模型的保存和加载...
一. 张量 PyTorch里面最基本的操作对象就是Tensor,Tensor是张量的英文,表示的是一个多维的矩阵,比如零维就是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和 ...
- tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)
最新版本:https://www.mashangxue123.com/tensorflow/tf2-tutorials-keras-save_and_restore_models.html 英文版本: ...
- TensorFlow 保存和加载模型
参考: 保存和恢复模型官方教程 tensorflow2保存和加载模型 TensorFlow2.0教程-keras模型保存和序列化
- PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard
文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...
- checkpoint-模型保存和加载
模型的保存和加载 实验介绍 训练过模型的小伙伴一定对ckpt这个东西不陌生,下面我们就来看看它的魅力. 在模型训练过程中,可以添加检查点(Checkpoint)用于保存模型的参数,以便进行推理及中断后 ...
最新文章
- caffe anaconda3 Python.h: 没有那个文件或目录
- 树莓派搭建ActiveMQ
- Sentinel-Dashboard 与 apollo 规则的相互同步
- c++引用专题之常引用
- php 累,php 记录进行累结果
- ospf 单区域配置
- [物理学与PDEs]第1章第6节 电磁场的标势与矢势 6.3 例 --- 电偶极辐射
- 计算机组成原理艾列富,理论结合实验的计算机组成原理课程教学措施初探.pdf...
- excel python自动化_excel表自动化-python
- c语言win api函数,Win2K下的Api函数的拦截
- 【Qt】QTableView中嵌入复选框CheckBox 的四种方法总结
- CYYMysql 源码解读 4
- 阿里云,CentOS下yum安装mysql,jdk,tomcat
- phpstorm使用技巧
- 电脑专业英语1500词
- c语言连连看实验报告,连连看c语言实验报告.docx
- java short相加_为什么两个short类型相加会自动提升为int?
- 應用高解析度線掃描CCD於ITO導電玻璃表面瑕疵檢測之研究
- Docker学习笔记1-初识Docker
- oracle apex 日志,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧
热门文章
- Leangoo研发管理软件甘特图6.0.2 版发布
- 和产品争论MySQL底层如何实现order by的,惨败!
- Intellij IDEA必备插件,提高效率的“七种武器”!
- 优秀的 Java 项目是如何分层的?
- 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!
- 重磅丨国资委下发通知,加快推进国有企业数字化转型
- 为什么把事情拖到最后做效率特别高?
- js空对象undefined
- 如何判断Java中两个Class对象是否相同
- android服务重启间隔,android – 崩溃的服务在很长一段时间后重新启动