zoukankan      html  css  js  c++  java
  • 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实现线程间的同步,终止其他线程;

  • 相关阅读:
    ESP32 SDA和SCL
    ESP32的HSPI和VSPI区别
    ffmpeg生成视频封面图
    小程序读取几种不同格式json数据(小程序json解析)
    ajax
    使用Java语言,连接linux服务器,并远程执行shell 脚本
    Echarts饼图的使用
    js提取对象数组中的某一个属性
    java读取文件推送报文
    java读取本地文件内容TXT文件
  • 原文地址:https://www.cnblogs.com/xiaowa/p/13301291.html
Copyright © 2011-2022 走看看