宣告和初始化變數張量

當值需要在會話中更新時,使用可變張量。在建立神經網路時,它是用於權重矩陣的張量型別,因為這些值將在訓練模型時更新。

可以使用 tf.Variable()tf.get_variable() 函式來宣告變數張量。建議使用 tf.get_variable,因為它提供了更多的靈活性,例如:

# Declare a 2 by 3 tensor populated by ones
a = tf.Variable(tf.ones([2,3], dtype=tf.float32))
a = tf.get_variable('a', shape=[2, 3], initializer=tf.constant_initializer(1))

需要注意的是,宣告變數張量不會自動初始化值。使用以下方法之一啟動會話時,需要顯式初始化值:

  • tf.global_variables_initializer().run()
  • session.run(tf.global_variables_initializer())

以下示例顯示了宣告和初始化變數張量的完整過程。

# Build a graph
graph = tf.Graph()
with graph.as_default():
    a = tf.get_variable('a', shape=[2,3], initializer=tf.constant_initializer(1), dtype=tf.float32))     # Create a variable tensor

# Create a session, and run the graph
with tf.Session(graph=graph) as session:
    tf.global_variables_initializer().run()  # Initialize values of all variable tensors
    output_a = session.run(a)            # Return the value of the variable tensor
    print(output_a)                      # Print this value

其中列印出以下內容:

[[ 1.  1.  1.]
 [ 1.  1.  1.]]