宣告和初始化變數張量
當值需要在會話中更新時,使用可變張量。在建立神經網路時,它是用於權重矩陣的張量型別,因為這些值將在訓練模型時更新。
可以使用 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.]]