• 『TensorFlow』线程控制器类&变量作用域


    线程控制器类

    线程控制器原理:

    监视tensorflow所有后台线程,有异常出现(主要是越界,资源循环完了)时,其should_stop方法就会返回True,而它的request_stop方法则用于要求各个线程安全退出。需要使用local变量,初始化时注意。

    coord = tf.train.Coordinator()  # 线程控制器
    threads = tf.train.start_queue_runners(coord=coord) # 启动队列
    try:
        while not coord.should_stop():
            # 定义训练状态报告即可,轮数等信息会在数据生成流程中规定
            pass
    
    except tf.errors.OutOfRangeError:
                saver.save(sess, os.path.join(model_path, 'fast_style_model'))
                tf.logging.info('Epoch limit reached')
            finally:
                coord.request_stop()
    coord.join(threads)
    

    变量作用域

    『cs231n』通过代码理解gan网络&tensorflow共享变量机制

    同一个变量如果有不同的数据流(计算图中不同的节点在不同的时刻去给同一个节点的同一个输入位置提供数据),

    • Variable变量会创建两个不同的变量节点去接收不同的数据流
    • get_variable变量在reuse为True时会使用同一个变量应付不同的数据流

    tf.get_variable()初始化较为繁琐,所以tf.variable_scope有initializer方法为域下变量添加默认初始化方式。

    tf.Variable()                                           # 声明变量
    tf.get_variable()                                       # 声明变量
    tf.global_variables_initializer()                       # 激活变量
    变量作用域的复用对RNN和GAN网络都很重要
    加深理解变量作用域
    1.上下文仅在命名时用以区分,不影响调用,所以下面的变量在上下文外引用依然不报错(此时名称已经生成)
    2.可以通过引用上下文代号载入/重用作用域!?
    3.存在载入关系时,忽略当前域位置的上层域(细想的话也理应如此)
    4.可以通过变量域为域内初始化添加默认参数
    5.get函数得到的变量名只继承变量域,不继承名称域
  • 相关阅读:
    取某个关键词以及之后的数据
    从SQL下载大量数据到Excel
    SQL 分页
    whereis linux文件搜索
    crontab Linux定时器工具
    Angular
    工具
    百度OAuth2.0登录
    JS事件学习 拖拽,鼠标键盘事件实例汇总
    信息栏滚动效果学习总结
  • 原文地址:https://www.cnblogs.com/hellcat/p/7361686.html
Copyright © 2020-2023  润新知