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)变量的的创建、初始化、保存和加载相关推荐

  1. TensorFlow学习笔记——使用TFRecord进行数据保存和加载

    本篇文章主要介绍如何使用TensorFlow构建自己的图片数据集TFRecord的方法,并使用最新的数据处理Dataset API进行操作. TFRecord TFRecord数据文件是一种对任何数据 ...

  2. keras中的模型保存和加载

    tensorflow中的模型常常是protobuf格式,这种格式既可以是二进制也可以是文本.keras模型保存和加载与tensorflow不同,keras中的模型保存和加载往往是保存成hdf5格式. ...

  3. TensorFlow 教程 --进阶指南--3.2变量:创建、初始化、保存和加载

    变量:创建.初始化.保存和加载 当训练模型时,用变量来存储和更新参数.变量包含张量 (Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘.这些变量的值可在之 ...

  4. TensorFlow模型保存和加载方法

    TensorFlow模型保存和加载方法 模型保存 import tensorflow as tfw1 = tf.Variable(tf.constant(2.0, shape=[1]), name=& ...

  5. numpy将所有数据变为0和1_PyTorch 学习笔记(二):张量、变量、数据集的读取、模组、优化、模型的保存和加载...

    一. 张量 PyTorch里面最基本的操作对象就是Tensor,Tensor是张量的英文,表示的是一个多维的矩阵,比如零维就是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和 ...

  6. tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)

    最新版本:https://www.mashangxue123.com/tensorflow/tf2-tutorials-keras-save_and_restore_models.html 英文版本: ...

  7. TensorFlow 保存和加载模型

    参考: 保存和恢复模型官方教程 tensorflow2保存和加载模型 TensorFlow2.0教程-keras模型保存和序列化

  8. PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard

    文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...

  9. checkpoint-模型保存和加载

    模型的保存和加载 实验介绍 训练过模型的小伙伴一定对ckpt这个东西不陌生,下面我们就来看看它的魅力. 在模型训练过程中,可以添加检查点(Checkpoint)用于保存模型的参数,以便进行推理及中断后 ...

最新文章

  1. caffe anaconda3 Python.h: 没有那个文件或目录
  2. 树莓派搭建ActiveMQ
  3. Sentinel-Dashboard 与 apollo 规则的相互同步
  4. c++引用专题之常引用
  5. php 累,php 记录进行累结果
  6. ospf 单区域配置
  7. [物理学与PDEs]第1章第6节 电磁场的标势与矢势 6.3 例 --- 电偶极辐射
  8. 计算机组成原理艾列富,理论结合实验的计算机组成原理课程教学措施初探.pdf...
  9. excel python自动化_excel表自动化-python
  10. c语言win api函数,Win2K下的Api函数的拦截
  11. 【Qt】QTableView中嵌入复选框CheckBox 的四种方法总结
  12. CYYMysql 源码解读 4
  13. 阿里云,CentOS下yum安装mysql,jdk,tomcat
  14. phpstorm使用技巧
  15. 电脑专业英语1500词
  16. c语言连连看实验报告,连连看c语言实验报告.docx
  17. java short相加_为什么两个short类型相加会自动提升为int?
  18. 應用高解析度線掃描CCD於ITO導電玻璃表面瑕疵檢測之研究
  19. Docker学习笔记1-初识Docker
  20. oracle apex 日志,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

热门文章

  1. Leangoo研发管理软件甘特图6.0.2 版发布
  2. 和产品争论MySQL底层如何实现order by的,惨败!
  3. Intellij IDEA必备插件,提高效率的“七种武器”!
  4. 优秀的 Java 项目是如何分层的?
  5. 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!
  6. 重磅丨国资委下发通知,加快推进国有企业数字化转型
  7. 为什么把事情拖到最后做效率特别高?
  8. js空对象undefined
  9. 如何判断Java中两个Class对象是否相同
  10. android服务重启间隔,android – 崩溃的服务在很长一段时间后重新启动