【TF-1-1】Tensorflow实验--入门

目录

  1. 实现一个累加器,并且每一步均输出累加器的结果值
  2. 实现动态的更新变量的维度数目
  3. 实现一个求解阶乘的代码

       

使用已介绍的相关TensorFlow相关知识点,实现以下三个功能(变量更新)

一、实现一个累加器,并且每一步均输出累加器的结果值

1

2

3

4

5

6

7

8

9

扫描二维码关注公众号,回复: 9876950 查看本文章

10

11

12

13

14

15

16

# 1. 定义一个变量

x = tf.Variable(1, dtype=tf.int32, name='v_x')

# 2. 变量的更新

# x = x+1 #这种操作不行

assign_op = tf.assign(ref=x, value=x + 1)#更新操作Update `ref` by assigning `value` to it.

# 3. 变量初始化操作

x_init_op = tf.global_variables_initializer()

# 3. 运行

with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:

sess.run(x_init_op) # 变量初始化

# 模拟迭代更新累加器

for i in range(5):

sess.run(assign_op) # 执行更新操作

r_x = sess.run(x)

print(r_x)

结果:

二、 实现动态的更新变量的维度数目

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import tensorflow as tf

# 1. 定义一个不定形状的变量

x = tf.Variable(

initial_value=[], # 给定一个空值

dtype=tf.float32, trainable=False,

validate_shape=False # 设置为True,表示在变量更新的时候,进行shape的检查,默认为True

)

# 2. 变量更改

concat = tf.concat([x, [0.0, 0]], axis=0)

assign_op = tf.assign(x, concat, validate_shape=False)

# 3. 变量初始化操作

x_init_op = tf.global_variables_initializer()

# 3. 运行

with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:

sess.run(x_init_op) # 变量初始化

# 模拟迭代更新累加器

for i in range(5):

sess.run(assign_op) # 执行更新操作

r_x = sess.run(x)

print(r_x)

结果:

三、实现一个求解阶乘的代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# 1. 定义一个变量

sum = tf.Variable(1, dtype=tf.int32)

# 2. 定义一个占位符

i = tf.placeholder(dtype=tf.int32)

# 3. 更新操作

tmp_sum = sum * i

assign_op = tf.assign(sum, tmp_sum)

# 4. 变量初始化操作

x_init_op = tf.global_variables_initializer()

# 5. 运行

with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:

sess.run(x_init_op) # 变量初始化

# 模拟迭代更新累加器

for j in range(1, 6):

r = sess.run(assign_op, feed_dict={i: j})

print("5!={}".format(r))

结果:

需求三的另一种写法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# 1. 定义一个变量

sum = tf.Variable(1, dtype=tf.int32)

# 2. 定义一个占位符

i = tf.placeholder(dtype=tf.int32)

# 3. 更新操作

tmp_sum = sum * i # 一样的效果 tmp_sum = tf.multiply(sum, i)

assign_op = tf.assign(sum, tmp_sum)

with tf.control_dependencies([assign_op]):

# 如果需要执行这个代码块中的内容,必须先执行control_dependencies中给定的操作/tensor

sum = tf.Print(sum, data=[sum, sum.read_value()], message='sum:')

# 4. 变量初始化操作

x_init_op = tf.global_variables_initializer()

# 5. 运行

with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:

sess.run(x_init_op) # 变量初始化

# 模拟迭代更新累加器

for j in range(1, 6):

# 执行更新操作

# 通过control_dependencies可以指定依赖关系,这样的话,就不用管内部的更新操作了

r = sess.run(sum, feed_dict={i: j})

print("5!={}".format(r))

猜你喜欢

转载自www.cnblogs.com/yifanrensheng/p/12507819.html