美文网首页python与Tensorflow
Tensorflow——tf.variable_scope和tf

Tensorflow——tf.variable_scope和tf

作者: SpareNoEfforts | 来源:发表于2018-10-29 22:31 被阅读5次

综述

  • tf.variable_scope
    可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量
  • tf.name_scope
    可以让变量有相同的命名,只是限于tf.Variable的变量

tf.variable_scope

可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量

import tensorflow as tf;    
import numpy as np;    
import matplotlib.pyplot as plt;    
  
with tf.variable_scope('V1'):  
    a1 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a2 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
with tf.variable_scope('V2'):  
    a3 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a4 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
    
with tf.Session() as sess:  
    sess.run(tf.initialize_all_variables())  
    print a1.name  
    print a2.name  
    print a3.name  
    print a4.name  

输出:

V1/a1:0
V1/a2:0
V2/a1:0
V2/a2:0

tf.name_scope

可以让变量有相同的命名,只是限于tf.Variable的变量

import tensorflow as tf;    
import numpy as np;    
import matplotlib.pyplot as plt;    
  
with tf.name_scope('V1'):  
    a1 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a2 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
with tf.name_scope('V2'):  
    a3 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a4 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
    
with tf.Session() as sess:  
    sess.run(tf.initialize_all_variables())  
    print a1.name  
    print a2.name  
    print a3.name  
    print a4.name  

报错:Variable a1 already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:

换成下面的代码就可以执行:

import tensorflow as tf;    
import numpy as np;    
import matplotlib.pyplot as plt;    
  
with tf.name_scope('V1'):  
    # a1 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a2 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
with tf.name_scope('V2'):  
    # a3 = tf.get_variable(name='a1', shape=[1], initializer=tf.constant_initializer(1))  
    a4 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a2')  
    
with tf.Session() as sess:  
    sess.run(tf.initialize_all_variables())  
    # print a1.name  
    print a2.name  
    # print a3.name  
    print a4.name  

输出:

V1/a2:0
V2/a2:0

相关文章

网友评论

    本文标题:Tensorflow——tf.variable_scope和tf

    本文链接:https://www.haomeiwen.com/subject/zknitqtx.html