zoukankan      html  css  js  c++  java
  • tensorflow scope的作用

    tensorflow的执行过程:

    1. 定义Graphs,包括Variables和Operations
    2. 创建session,运行Graphs

    在定义Variables的时候,Scope相当于C++中的命名空间,可以用Scope来避免命名冲突,以及方便重复使用定义的Variables

    如下代码,源于: https://github.com/MorvanZhou/tutorials/blob/master/tensorflowTUT/tf22_scope/tf22_scope.py

    # visit https://morvanzhou.github.io/tutorials/ for more!
    
    
    # 22 scope (name_scope/variable_scope)
    from __future__ import print_function
    import tensorflow as tf
    
    with tf.name_scope("a_name_scope"):
        initializer = tf.constant_initializer(value=1)
        var1 = tf.get_variable(name='var1', shape=[1], dtype=tf.float32, initializer=initializer)
        var2 = tf.Variable(name='var2', initial_value=[2], dtype=tf.float32)
        var21 = tf.Variable(name='var2', initial_value=[2.1], dtype=tf.float32)
        var22 = tf.Variable(name='var2', initial_value=[2.2], dtype=tf.float32)
    
    
    with tf.Session() as sess:
        sess.run(tf.initialize_all_variables())
        print(var1.name)        # var1:0
        print(sess.run(var1))   # [ 1.]
        print(var2.name)        # a_name_scope/var2:0
        print(sess.run(var2))   # [ 2.]
        print(var21.name)       # a_name_scope/var2_1:0
        print(sess.run(var21))  # [ 2.0999999]
        print(var22.name)       # a_name_scope/var2_2:0
        print(sess.run(var22))  # [ 2.20000005]
    
    
    with tf.variable_scope("a_variable_scope") as scope:
        initializer = tf.constant_initializer(value=3)
        var3 = tf.get_variable(name='var3', shape=[1], dtype=tf.float32, initializer=initializer)
        var4 = tf.Variable(name='var4', initial_value=[4], dtype=tf.float32)
        var4_reuse = tf.Variable(name='var4', initial_value=[4], dtype=tf.float32)
        scope.reuse_variables()
        var3_reuse = tf.get_variable(name='var3',)
    
    with tf.Session() as sess:
        # tf.initialize_all_variables() no long valid from
        # 2017-03-02 if using tensorflow >= 0.12
        if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1:
            init = tf.initialize_all_variables()
        else:
            init = tf.global_variables_initializer()
        sess.run(init)
        print(var3.name)            # a_variable_scope/var3:0
        print(sess.run(var3))       # [ 3.]
        print(var4.name)            # a_variable_scope/var4:0
        print(sess.run(var4))       # [ 4.]
        print(var4_reuse.name)      # a_variable_scope/var4_1:0
        print(sess.run(var4_reuse)) # [ 4.]
        print(var3_reuse.name)      # a_variable_scope/var3:0
        print(sess.run(var3_reuse)) # [ 3.]
  • 相关阅读:
    [Javascript] twitterbootstrap: 解决2.1版本中modal加载远程内容时,只加载一次的问题
    向大型网站学习SEO优化之道
    [Yii Framework] 使用Yii Framework开发微信公众平台
    [jQuery] ajax跨域处理方式
    [jQuery] form提交到iframe之后,获取iframe里面内容
    [Ubuntu] fatal: recursion detected in die handler
    [Yii Framework] Yii如何实现前后台的session分离
    [ubuntu] ubuntu13.04 64bit,安装FastDFS4.06过程遇到的问题和解决方案
    [转] 怎样在Ubuntu上安装Git服务器
    [ubuntu] ubuntu13.04切换桌面/工作区的方法
  • 原文地址:https://www.cnblogs.com/xbit/p/9947820.html
Copyright © 2011-2022 走看看