tensorflow小记2

Posted xiaowa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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小记2的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow C++ 批量推理

TensorFlow Object Detection API使用问题小记

tensorflow小记2

TensorFlow实战-TensorFlow和其他深度学习框架的对比-第2章

Python 内核在带有 tensorflow 2 的 Jupyter Notebook 上死机

神经网络学习小记录61——Tensorflow2 搭建常见分类网络平台(VGG16MobileNetResNet50)