python求最大值代码while_python-Tensorflow:如何实现累积最大值?

这是一个使用tensorflow while循环的cumulative_max的实现,它需要进行n = len(x)次迭代.该代码是可复制粘贴运行的示例.

import tensorflow as tf

def tf_while_condition(x, loop_counter):

return tf.not_equal(loop_counter, 0)

def tf_while_body(x, loop_counter):

loop_counter -= 1

y = tf.concat(([x[0]], x[:-1]), axis=0)

z = tf.maximum(x, y)

return z, loop_counter

x = tf.constant([0,2,5,3,8,1,7])

cumulative_max, _ = tf.while_loop(cond=tf_while_condition,

body=tf_while_body,

loop_vars=(x, x.shape[0]))

with tf.Session() as sess:

print(sess.run(cumulative_max))

结果:

[0 2 5 5 8 8 8]

注意:如果要计算的向量很大,并且不需要反向传播,则可能值得在tf.while_loop中包含back_prop = False.

理解TF while循环的关键是要了解基于python的函数tf_while_condition和tf_while_body仅被调用一次以产生相关的tensorflow操作.这两个函数不在循环中调用.他们返回的操作将在sess.run计算期间在张量流图中的循环中执行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值