tf.while_loop(cond,
        body,
        loop_vars,
        shape_invariants=None,
        parallel_iterations=10,
        back_prop=True,
      swap_memory=False,
        name=None,    
        maximum_iterations=None,
        return_same_structure=False)

tf.while_loop 可以这样理解:

loop = []
while cond(loop):
loop = body(loop)

即loop参数先传入cond 判断条件是否成立,成立之后,把 loop参数传入body 执行操作, 然后返回 操作后的 loop 参数,即loop参数已被更新,再把更新后的参数传入cond, 依次循环,直到不满足条件。

我们来看这样一个场景如何在 tensorflow中实现:

i= 0
n =10
while(i < n):
i = i +1

首先这个要有个判断条件的语句,即:

i < n

满足条件就执行循环体里的操作,这个判断条件在tensorflow里,要写个函数来代替,即:

def cond(i, n):
return i < n

之后是循环体里的操作,也要一个函数来代替,即:

def body(i, n):
i = i + 1
return i, n

请注意body函数里虽然没有与参数 n 有关的操作,但是必须要传入参数 n, 因为正如前面所说,要构成循环,参数在body函数更新后还要返回给cond函数,判断是否满足条件,如果不传入参数 n 下次,就没法判断了,合起来总得代码为:

import tensorflow as tf 

i = tf.constant(0)

c = lambda i: tf.less(i, 10)

b = lambda i: tf.add(i, 1)

r = tf.while_loop(c, b, [i])

with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run(r))

tf.while_loop的更多相关文章

  1. 11 tensorflow在tf.while_loop循环(非一般循环)中使用操纵变量该怎么做

    代码(操纵全局变量) xiaojie=1 i=tf.constant(0,dtype=tf.int32) batch_len=tf.constant(10,dtype=tf.int32) loop_c ...

  2. TF常用知识

    命名空间及变量共享 # coding=utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt; ...

  3. 10 tensorflow在循环体中用tf.print输出节点内容

    代码 i=tf.constant(0,dtype=tf.int32) batch_len=tf.constant(10,dtype=tf.int32) loop_cond = lambda a,b: ...

  4. TF随笔-9

    计算累加 #!/usr/bin/env python2 # -*- coding: utf-8 -*-"""Created on Mon Jul 24 08:25:41 ...

  5. Control Flow in Tensorflow TF中的控制流解析

    写在前面 本文翻译自Tensorflow团队的文章Tensorflow Control Flow Implementation,部分内容加入了笔者自己的理解,如有不妥之处还望各位指教. 目录 概览 控 ...

  6. tensorflow tfdbg 调试手段

    https://blog.csdn.net/gubenpeiyuan/article/details/82710163 TensorFlow 调试程序 tfdbg 是 TensorFlow 的专用调试 ...

  7. 『TensorFlow』流程控制

    『PyTorch』第六弹_最小二乘法对比PyTorch和TensorFlow TensorFlow 控制流程操作 TensorFlow 提供了几个操作和类,您可以使用它们来控制操作的执行并向图中添加条 ...

  8. TensorFlow 2.0 新特性

    安装 TensorFlow 2.0 Alpha 本文仅仅介绍 Windows 的安装方式: pip install tensorflow==2.0.0-alpha0 # cpu 版本 pip inst ...

  9. tensorflow之数据读取探究(1)

    Tensorflow中之前主要用的数据读取方式主要有: 建立placeholder,然后使用feed_dict将数据feed进placeholder进行使用.使用这种方法十分灵活,可以一下子将所有数据 ...

随机推荐

  1. 取消svn关联文件夹

    svn没有自带取消svn关联功能,所以我们需要以下脚本 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classe ...

  2. GCC related commands

    GCC   -l  option is to link the library. It can use for static and share link.  Link -l with library ...

  3. day 29 socketsetserver 模块

    1.FTP上传/下载服务端/客户端. --------------------------------------------------------------------------------- ...

  4. removing-guest-session-at-login-in-ubuntu-14-04

    http://askubuntu.com/questions/451526/removing-guest-session-at-login-in-ubuntu-14-04

  5. 创建表时,主键 USING BTREE、USING HASH 的含义(待补充)

    PRIMARY KEY (`id`) USING BTREE

  6. log4j.properties配置说明学习网址

    https://blog.csdn.net/wangzhaotongalex/article/details/51308802

  7. 不同eclipse版本的git库使用

    在eclipse 4.4.2 -win32版本下编译好后上传版本: 1.在eclipse 4.4.0 -win64 版本下,编译报 缺少 sevlet.http...库,解决方法  project - ...

  8. mysql5.5 for linux 安装(转)

    下载地址: http://dev.mysql.com/downloads/mysql/5.5.html#downloads 进入后会有选择系统 选择linux-generic后 又有很多产品选择,我们 ...

  9. 二维指针的malloc内存分配(转)

    写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误.下面贴上一些示例代码,以供参考. 如果要给二维数组(m*n)分配空间,代码可以写成下面: char **a, i; 1 ...

  10. 找出n个数中重复最多的10个数

    题目很清晰,直接上python代码 import pandas as pd import copy class BenchMark: def __init__(self): self.MIN = 10 ...