声明和初始化变量张量
当值需要在会话中更新时,使用可变张量。在创建神经网络时,它是用于权重矩阵的张量类型,因为这些值将在训练模型时更新。
可以使用 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.]]