【TF-1-1】Tensorflow实验--入门
目录
- 实现一个累加器,并且每一步均输出累加器的结果值
- 实现动态的更新变量的维度数目
-
实现一个求解阶乘的代码
使用已介绍的相关TensorFlow相关知识点,实现以下三个功能(变量更新)
一、实现一个累加器,并且每一步均输出累加器的结果值
1 # 1. 定义一个变量
2 x = tf.Variable(1, dtype=tf.int32, name='v_x')
3 # 2. 变量的更新
4 # x = x+1 #这种操作不行
5 assign_op = tf.assign(ref=x, value=x + 1)#更新操作Update `ref` by assigning `value` to it.
6 # 3. 变量初始化操作
7 x_init_op = tf.global_variables_initializer()
8 # 3. 运行
9 with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
10 sess.run(x_init_op) # 变量初始化
11 # 模拟迭代更新累加器
12 for i in range(5):
13 sess.run(assign_op) # 执行更新操作
14 r_x = sess.run(x)
15 print(r_x)
16
结果:

二、 实现动态的更新变量的维度数目
1 import tensorflow as tf
2 # 1. 定义一个不定形状的变量
3 x = tf.Variable(
4 initial_value=[], # 给定一个空值
5 dtype=tf.float32, trainable=False,
6 validate_shape=False # 设置为True,表示在变量更新的时候,进行shape的检查,默认为True
7 )
8 # 2. 变量更改
9 concat = tf.concat([x, [0.0, 0]], axis=0)
10 assign_op = tf.assign(x, concat, validate_shape=False)
11 # 3. 变量初始化操作
12 x_init_op = tf.global_variables_initializer()
13 # 3. 运行
14 with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
15 sess.run(x_init_op) # 变量初始化
16 # 模拟迭代更新累加器
17 for i in range(5):
18 sess.run(assign_op) # 执行更新操作
19 r_x = sess.run(x)
20 print(r_x)
21
结果:

三、实现一个求解阶乘的代码
1 # 1. 定义一个变量
2 sum = tf.Variable(1, dtype=tf.int32)
3 # 2. 定义一个占位符
4 i = tf.placeholder(dtype=tf.int32)
5 # 3. 更新操作
6 tmp_sum = sum * i
7 assign_op = tf.assign(sum, tmp_sum)
8 # 4. 变量初始化操作
9 x_init_op = tf.global_variables_initializer()
10 # 5. 运行
11 with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
12 sess.run(x_init_op) # 变量初始化
13 # 模拟迭代更新累加器
14 for j in range(1, 6):
15 r = sess.run(assign_op, feed_dict={i: j})
16 print("5!={}".format(r))
结果:

需求三的另一种写法:
1 # 1. 定义一个变量
2 sum = tf.Variable(1, dtype=tf.int32)
3 # 2. 定义一个占位符
4 i = tf.placeholder(dtype=tf.int32)
5 # 3. 更新操作
6 tmp_sum = sum * i # 一样的效果 tmp_sum = tf.multiply(sum, i)
7 assign_op = tf.assign(sum, tmp_sum)
8 with tf.control_dependencies([assign_op]):
9 # 如果需要执行这个代码块中的内容,必须先执行control_dependencies中给定的操作/tensor
10 sum = tf.Print(sum, data=[sum, sum.read_value()], message='sum:')
11 # 4. 变量初始化操作
12 x_init_op = tf.global_variables_initializer()
13 # 5. 运行
14 with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
15 sess.run(x_init_op) # 变量初始化
16 # 模拟迭代更新累加器
17 for j in range(1, 6):
18 # 执行更新操作
19 # 通过control_dependencies可以指定依赖关系,这样的话,就不用管内部的更新操作了
20 r = sess.run(sum, feed_dict={i: j})
21 print("5!={}".format(r))

浙公网安备 33010602011771号