1. 程式人生 > >TensorFlow中的name_scope和variable_scope

TensorFlow中的name_scope和variable_scope

1、tf.Variable() 和 tf.get_variable()

     (1)tf.Variable()會自動檢測命名衝突並自行處理。

import tensorflow as tf
sess = tf.Session()
var1 = tf.Variable([1.2, 3.4], name = 'var')
var2 = tf.Variable([2.2, 5.5], name = 'var')
sess.run(tf.global_variables_initializer())
print(var1.name, sess.run(var1))
print(var2.name, sess.run(var2))

### 執行結果:
var:0 [1.2 3.4]
var_1:0 [2.2 5.5]

      (2)tf.get_variable()有一個變數檢測機制,會檢測已經存在的變數是否設定為共享變數,如果已經存在該變數且沒有被設定為共享變數,則TensorFlow執行到第二個變數時會報錯。 

import tensorflow as tf
sess = tf.Session()
var1 = tf.get_variable(name = 'get_var', shape = [2,3])
var2 = tf.get_variable(name = 'get_var', shape = [2,3])
sess.run(tf.global_variables_initializer())
print(var1.name, sess.run(var1))
print(var2.name, sess.run(var2))

## 執行結果:
ValueError: Variable get_var already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:

  File "<ipython-input-1-b4ded7fba4ad>", line 3, in <module>