Variable

《庄子·天下》中说“一尺之棰,日取其半,万世不竭。”使用TensorFlow来模拟这个过程。

Variable

1
2
3
4
5
6
7
8
9
10
11
import tensorflow as tf


# 定义变量
bar = tf.Variable(1.0, name="bar")

two = tf.constant(2.0)
divided = tf.divide(bar, 2.0) # 定义取半操作,这一步并没有直接计算

# 将bar更新为新的长度
update = tf.assign(bar, divided)

初始化变量

global_variables_initializer()

1
init = tf.global_variables_initializer() # z定义了变量就必须要初始化

创建会话并运行

1
2
3
4
5
with tf.Session() as sess:
sess.run(init)
for i in range(10):
sess.run(update)
print('day %d len: '%i, sess.run(bar))
day 0 len:  0.5
day 1 len:  0.25
day 2 len:  0.125
day 3 len:  0.0625
day 4 len:  0.03125
day 5 len:  0.015625
day 6 len:  0.0078125
day 7 len:  0.00390625
day 8 len:  0.001953125
day 9 len:  0.0009765625

总结

Variable就是变量,和变量相对的就是常量,常量就是不变的量,那么变量就是会变化的量。在TensorFlow中使用tf.Variable()来定义变量。定义了变量就必须要进行变量初始化,初始化使用tf.global_variables_initializer()tf.initialize_all_variables().变量在运行时也需依靠定义会话Session来run才行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 高斯的故事之高斯求和TensorFlow实现
s = tf.Variable(0, name="sum")
number = tf.Variable(0, name="number")
one = tf.constant(1)

new_number = tf.assign(number, tf.add(number, one))
update = tf.assign(s, tf.add(s, new_number))

init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)
for i in range(1, 101):
sess.run(update)
print(sess.run(s))

sess.close()
5050