您的位置:首页 > 编程语言

tensorflow实现一个求解阶乘的代码(以及控制依赖tf.control_dependencies)

2020-03-31 19:29 651 查看

tf.control_dependencies的用法

# 需求三:实现一个求解阶乘的代码
# 方法一
# 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.变量初始化操作
init_op = tf.global_variables_initializer()

# 5.运行
with tf.Session() as sess:
sess.run(init_op)
for j in range(1, 6):
# 执行更新操作
sess.run(assign_op, feed_dict={i: j})

print("5!={}".format(sess.run(sum)))
'''

'''
# 方法二:用了tensorflow的控制依赖tf.control_dependencies
# 1.定义变量
sum = tf.Variable(1, dtype=tf.int32)

# 2.定义一个占位符
i = tf.placeholder(dtype=tf.int32)  # i就是一个张量

# 3.变量更改
tmp_sum = sum*i  # 此处乘法直接写的    等价于tmp_sum = tf.multiply(sum, i)

assign_op = tf.assign(sum, tmp_sum)  # 更新sum值时,是没有数据流的,依赖关系用虚线表示,如果是实线就不是有向无环图了
with tf.control_dependencies([assign_op]):
# 如果需要执行这个代码块中的内容,必须先执行control_dependencies中给定的操作/tensor
sum = tf.Print(sum, data=[sum, sum.read_value()], message='sum:')  # tf.Print就是打印日志(sum的值的相关日志),
# 打印格式自己定,就是data参数值的格式。tf.Print能运行出日志结果的前提是Session的config参数中log_device_placement得是True
''
data=[sum, sum.read_value()]的执行结果
sum:[1][1]
sum:[2][2]
sum:[6][6]
sum:[24][24]
sum:[120][120]
''

# 4.变量初始化操作
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(init_op)
for j in range(1, 6):
# 执行更新操作
r = sess.run(sum, feed_dict={i: j})
# 通过control_dependencies可以指定依赖关系,这样的话,就不用管内部的更新操作了
print("5!={}".format(r))
'''
  • 点赞
  • 收藏
  • 分享
  • 文章举报
shitoucoming 发布了49 篇原创文章 · 获赞 1 · 访问量 1337 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐