2016-06-07 3 views
2
with tf.name_scope('hidden4'): 
    weights = tf.Variable(tf.convert_to_tensor(weights4)) 
    biases = tf.Variable(tf.convert_to_tensor(biases4)) 
    hidden4 = tf.sigmoid(tf.matmul(hidden3, weights) + biases) 

Ich möchte die Variable hidden4 kennen ues tf.get_variable/Gewichte wie oben definiert sind, aber nicht, wie unten:Wie erhält man den Wert einer Variablen, die in tf.name_scope() definiert ist?

hidden4weights = tf.get_variable("hidden4/weights:0") 
*** ValueError: Variable hidden4/weights:0 already exists, disallowed.  Did you mean to set reuse=True in VarScope? Originally defined at: 

File "<stdin>", line 1, in <module> 
File "/usr/local/lib/python2.7/pdb.py", line 234, in default 
exec code in globals, locals 
File "/usr/local/lib/python2.7/cmd.py", line 220, in onecmd 
return self.default(line) 

Dann versuche ich hidden4/weights.eval (sess), aber es auch gescheitert.

(Pdb) hidden4/weights.eval(sess) 
*** NameError: name 'hidden4' is not defined 

Antwort

4

tf.name_scope() wird verwendet, um Variablen zu visualisieren.

tf.name_scope (Name)

  • Wrapper für Graph.name_scope() mit dem Standarddiagramm.

Was ich denke, die Sie suchen, ist tf.variable_scope():

Variable Scope Mechanismus in TensorFlow besteht aus zwei Hauptfunktionen:

  • tf.get_variable (,,): Erstellt oder gibt eine Variable mit einem bestimmten Namen zurück.

  • tf.variable_scope(): Verwaltet Namespaces für Namen, die an tf.get_variable() übergeben werden.

with tf.variable_scope('hidden4'): 
    # No variable in this scope with name exists, so it creates the variable 
    weights = tf.get_variable("weights", <shape>, tf.convert_to_tensor(weights4)) # Shape of a new variable (hidden4/weights) must be fully defined 
    biases = tf.get_variable("biases", <shape>, tf.convert_to_tensor(biases4)) # Shape of a new variable (hidden4/biases) must be fully defined 
    hidden4 = tf.sigmoid(tf.matmul(hidden3, weights) + biases) 

with tf.variable_scope('hidden4', reuse=True): 
    hidden4weights = tf.get_variable("weights") 

assert weights == hidden4weights 

Das sollte es tun.

+0

Vielen Dank für Ihre Hilfe und ausführliche Beschreibung !! Ich stoße auf ein neues Problem wie unten T_T –

0

Ich habe das Problem, das oben gelöst:

classifyerlayer_W=[v for v in tf.all_variables() if v.name == "softmax_linear/weights:0"][0] #find the variable by name "softmax_linear/weights:0" 
init= numpy.random.randn(2048, 4382) # create a array you use to re-initial the variable 
assign_op = classifyerlayer_W.assign(init) # create a assign operation 
sess.run(assign_op) # run op to finish the assign 
Verwandte Themen