TensorFlow之矩阵初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow之矩阵初始化相关的知识,希望对你有一定的参考价值。

参考技术A

用TensorFlow训练网络时,经常需要初始化指定内容的矩阵,所以这里把常用的初始化方法总结出来。其它平台例如Caffe、PyTorch都能用到这里的思想,方法都是类似的,还有常用的numpy库也是一样的,重要的是理解。

生成指定 shape 的矩阵,并且所有元素设置为 1 , dtype 为元素类型, name 为操作名

和 tf.ones 方法类似,区别是这里元素的值为0

生成和 tensor 同样纬度的矩阵,里面所有元素的值为1

生成和 tensor 同样纬度的矩阵,里面所有元素的值为0

生成指定 dims 的矩阵,里面所有元素的值为 value

生成指定 shape 的矩阵,里面所有元素的值为 value

生成指定 shape 的矩阵,里面元素的值根据 正太分布 随机生成,均值为 mean ,标准差为 stddev

和 tf.random_normal 类似,不过只保留 [mean-2×stddev,mean+2×stddev] 范围内的随机数( 截断正太分布 )

生成指定 shape 的矩阵,里面元素的值根据 均匀分布 随机生成,最小值为 minval ,最大值为 maxval

生成等差数列,起始值为 start ,结束值为 stop ,共取 num 个值,虽然不是矩阵,但是我们可以通过 reshape 转换成矩阵

生成等差数列,起始值为 start ,结束值为 stop ,以间隔 delta 取值,虽然不是矩阵,但是我们可以通过 reshape 转换成矩阵

tensorflow小记2

with tf.device("gpu:1"): 该语句用来指派特定的CPU或GPU执行操作;

变量是为了维护图执行过程中的状态信息;
当训练模型时,用变量来存储和更新参数,变量包含张量存放于内存的缓冲区,建模时需要被明确的初始化,模型训练后它们必须被存储到磁盘中;模型训练和分析时变量可被加载;
变量的初始化必须在模型的其他操作之前先明确的完成,最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作;从模型中恢复变量时,不需要先对它们做初始化;
tf.initialize_all_variables() 初始化所有变量;也可以传入一组变量进行初始化;
initialized_value() 初始化一个变量;

 

变量作用域工作:
当调用tf.get_variable时,tf.get_variable_scope().reuse==False时,作用域是为创建新变量设置的;创建变量的全程将会由当前变量作用域+所提供的名字组成并检查;
当tf.get_variable_scope().reuse==True时,作用域就是为重置变量所设置,此时调用会搜索一个已经存在的变量,它的全称和当前变量的作用域名+所提供的名字相等;

在图(graph)中定义的操作是描绘的表达式的一部分,调用run执行表达式之前,并不会真正执行;

使用feed机制可以临时替代图中的任意操作中的tensor可以对图中任何操作提交补丁,直接插入一个tensor,但要使用tf.placeholder()为这些操作创建占位符;

为了减少过拟合,在输出层之前加入dropout,可以用一个placeholder来代表在dropout中保持不变的概率;

 

保存和恢复模型两种方式:
(1)使用tf.train.Saver()对象,构造器给图中的所有变量,或定义在列表里的变量(位于tf.train.Saver之后的变量不会被保存),添加save和restore ops,saver对象提供了方法来运行这些ops,定义检查点文件的读写路径;
存储和恢复部分变量:给tf.train.Saver()构造函数传入python字典,可定义需要保持的变量及对应名称:键对应使用的名称,值对应被管理的变量;
(2)生成图协议文件,二进制文件,扩展名为.pb,用tf.train.write_graph()保存,只包含图形结构,不包含权重,然后使用tf.import_graph_def()来加载图形;

检查点文件(checkpoint file):可以用来后续恢复模型以进一步训练或评估;

 

队列和线程:
tf.FIFOQueue创建一个先入先出队列:enqueue_many(),enqueue()执行入队操作(以列表的的形式放入元素);dequeue()执行出队操作;
tf.RandomShuffleQueue创建一个随机队列(可以设置队列最大长度capacity,出队后最小长度min_after_dequeue)。出队列时以随机的顺序产生元素的(可以在CNN网络中随机产生一个训练样本);
队列管理器QueueRunner可以创建进程,弊端是入队线程独自执行,在需要的出队操作完成之后,程序无法结束;
协调器tf.train.Coordinator实现线程间的同步,终止其他线程;

以上是关于TensorFlow之矩阵初始化的主要内容,如果未能解决你的问题,请参考以下文章

Windows下Pycharm安装Tensorflow:ERROR: Could not find a version that satisfies the requirement tensorflo

tensorflow核心概念之op

深度学习框架介绍

TensorFlow学习笔记

TensorFlow简明入门教程

tensorflow之tf.meshgrid()