• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python while_v2.while_loop_v2函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中tensorflow.python.ops.while_v2.while_loop_v2函数的典型用法代码示例。如果您正苦于以下问题:Python while_loop_v2函数的具体用法?Python while_loop_v2怎么用?Python while_loop_v2使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了while_loop_v2函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: testMultipleWhileLoops

 def testMultipleWhileLoops(self):
   x = constant_op.constant(2.)
   ret1 = while_loop_v2(lambda v: v < 4., lambda v: v * v, [x])  # x**2
   ret2 = while_loop_v2(lambda v: v < 16., lambda v: v * v, ret1)  # x**4
   grad = gradients_impl.gradients(ret2, [x])  # 4x**3
   grad_grad = gradients_impl.gradients(grad, [x])  # 12x**2
   with self.cached_session() as sess:
     self.assertSequenceEqual(sess.run(grad), [32.])
     self.assertSequenceEqual(sess.run(grad_grad), [48.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:9,代码来源:while_v2_test.py


示例2: testNestedWhileAndTensorArray

  def testNestedWhileAndTensorArray(self):
    n = constant_op.constant(3.0)

    def Body(row, ta, n):

      def InnerBody(row, col, ta, n):
        # Note: row and col are 1-based.
        ta = ta.write(
            math_ops.cast(n * (row - 1.) + col - 1., dtypes.int32), row * col)
        return row, col + 1., ta, n

      # TODO(b/118457764): Remove n from loop_vars from both loops once fixed.
      ta = while_loop_v2(
          lambda _, col, _1, n: col <= n,
          InnerBody, [row, constant_op.constant(1.), ta, n],
          return_same_structure=False)[2]
      return row + 1., ta, n

    ta = tensor_array_ops.TensorArray(dtype=dtypes.float32, size=9)
    ta = while_loop_v2(
        lambda row, _, _1: row <= n,
        Body, [constant_op.constant(1.), ta, n],
        return_same_structure=False)[1]

    output = array_ops.reshape(ta.stack(), [3, 3])
    self.assertAllEqual(
        self.evaluate(output), [[1., 2., 3.], [2., 4., 6.], [3., 6., 9.]])
开发者ID:aeverall,项目名称:tensorflow,代码行数:27,代码来源:while_v2_test.py


示例3: testDuplicateAccumulator

  def testDuplicateAccumulator(self):
    x = constant_op.constant(2.)

    tensor_list = list_ops.empty_tensor_list(
        element_dtype=dtypes.float32, element_shape=ScalarShape())

    def Cond(x, tl):
      del tl  # Unused for Cond.
      return x < 5.

    def Body(x, tl):
      # There is an accumulator in the loop already so we should not add
      # another.
      tl = list_ops.tensor_list_push_back(tl, x)
      return x**2., tl

    ret = while_loop_v2(Cond, Body, [x, tensor_list])

    for op in ops.get_default_graph().get_operations():
      if op.type == "While":
        while_op = op

    body_graph = while_v2._get_body_graph(while_op)
    # body_graph.inputs: [counter_arg, x_arg, tl_arg, *accumulators]
    x_input_t = body_graph.inputs[1]
    accumulator_count = len(
        [c for c in x_input_t.consumers() if c.type == "TensorListPushBack"])
    self.assertEqual(accumulator_count, 1)

    grad = gradients_impl.gradients(ret[0], x)
    with self.cached_session() as sess:
      self.assertEqual(sess.run(ret[0]), 16.)
      self.assertSequenceEqual(sess.run(grad), [32.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:33,代码来源:while_v2_test.py


示例4: testSingleLoopVar

 def testSingleLoopVar(self):
   x = constant_op.constant(2.)
   ret = while_loop_v2(lambda v: v < 8., lambda v: v * v, [x])
   grad = gradients_impl.gradients(ret, [x])
   with self.cached_session() as sess:
     self.assertEqual(sess.run(ret), 16.)
     self.assertSequenceEqual(sess.run(grad), [32.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:7,代码来源:while_v2_test.py


示例5: testMultipleLoopVars

  def testMultipleLoopVars(self):
    x = constant_op.constant(5.)
    y = constant_op.constant(3.)

    # x = 5.
    # y = 3.
    # while x < 45.:
    #   x = x * y
    #   y = x + y
    ret = while_loop_v2(lambda v, _: v < 45., lambda v, w: (v * w, v + w),
                        [x, y])
    # ret = [y*x**2 + x*y**2, x*y + x + y]

    gradx_0 = gradients_impl.gradients(ret[0], [x])  # [2*x*y + y**2]
    gradx_1 = gradients_impl.gradients(ret[1], [x])  # [y + 1]
    gradx_2 = gradients_impl.gradients(ret, [x])  # [2*x*y + y**2 + 2*y + 1]
    grady_0 = gradients_impl.gradients(ret[0], [y])  # [2*x*y + x**2]
    grady_1 = gradients_impl.gradients(ret[1], [y])  # [x + 1]
    grady_2 = gradients_impl.gradients(ret, [y])  # [2*x*y + x**2 + x + 1]
    with self.cached_session() as sess:
      self.assertSequenceEqual(sess.run(ret), [120., 23.])
      self.assertSequenceEqual(sess.run(gradx_0), [39.])
      self.assertSequenceEqual(sess.run(gradx_1), [4.])
      self.assertSequenceEqual(sess.run(gradx_2), [43.])
      self.assertSequenceEqual(sess.run(grady_0), [55.])
      self.assertSequenceEqual(sess.run(grady_1), [6.])
      self.assertSequenceEqual(sess.run(grady_2), [61.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:27,代码来源:while_v2_test.py


示例6: fnWithLoop

 def fnWithLoop():  # pylint: disable=invalid-name
   with backprop.GradientTape() as tape:
     _, x = while_loop_v2(
         lambda i, _: i < 2,
         lambda i, x: (i + 1, x * v),
         [0, 2.])
   return tape.gradient(x, v)
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:7,代码来源:while_v2_test.py


示例7: testSingleLoopVar

 def testSingleLoopVar(self):
   x = constant_op.constant(2.)
   ret = while_loop_v2(
       lambda v: v < 8., lambda v: v * v, [x], return_same_structure=False)
   grad = gradients_impl.gradients(ret, [x])
   with self.cached_session() as sess:
     self.assertEqual(self.evaluate(ret), 16.)
     self.assertSequenceEqual(self.evaluate(grad), [32.])
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:8,代码来源:while_v2_test.py


示例8: testCaptureExternalTensorInBody

 def testCaptureExternalTensorInBody(self):
   x = constant_op.constant(2.)
   y = constant_op.constant(3.)
   ret = while_loop_v2(lambda v: v < 8., lambda v: v * y, [x])
   grad = gradients_impl.gradients(ret, [x])
   with self.cached_session() as sess:
     self.assertEqual(sess.run(ret), 18.)
     self.assertSequenceEqual(sess.run(grad), [9.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:8,代码来源:while_v2_test.py


示例9: testCaptureExternalTensorInCond

 def testCaptureExternalTensorInCond(self):
   x = constant_op.constant(2.)
   y = constant_op.constant(1.)
   ret = while_loop_v2(lambda v: v + y < 9., lambda v: v * 3., [x])
   grad = gradients_impl.gradients(ret, [x])
   with self.cached_session() as sess:
     self.assertEqual(self.evaluate(ret), 18.)
     self.assertSequenceEqual(self.evaluate(grad), [9.])
开发者ID:JonathanRaiman,项目名称:tensorflow,代码行数:8,代码来源:while_v2_test.py


示例10: testDoubleDerivative

 def testDoubleDerivative(self):
   x = constant_op.constant(2.)
   ret = while_loop_v2(lambda v: v < 8., lambda v: v**2, [x])  # x**4
   grad = gradients_impl.gradients(ret, [x])  # 4x**3
   grad_grad = gradients_impl.gradients(grad, [x])  # 12x**2
   with self.cached_session() as sess:
     self.assertEqual(sess.run(ret), 16.)
     self.assertSequenceEqual(sess.run(grad), [32.])
     self.assertSequenceEqual(sess.run(grad_grad), [48.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:9,代码来源:while_v2_test.py


示例11: testGradientTape

 def testGradientTape(self):
   with backprop.GradientTape() as t:
     x = constant_op.constant(2.)
     t.watch(x)
     ret = while_loop_v2(
         lambda v: v < 4., lambda v: v * v, [x],
         return_same_structure=False)  # x**2
   grad = t.gradient(ret, x)
   with self.cached_session() as sess:
     self.assertAllEqual(sess.run(grad), 4.0)
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:10,代码来源:while_v2_test.py


示例12: testAccumulatorElementShape

  def testAccumulatorElementShape(self, shape):

    def MatchShape(actual_tensor_shape):
      # Compare the shapes, treating None dimensions as equal. We do not
      # directly check actual_tensor_shape and tf.TensorShape(shape) for
      # equality because tf.Dimension.__eq__ returns None if either dimension is
      # None.
      if shape is None:
        self.assertIsNone(actual_tensor_shape.dims)
      else:
        self.assertListEqual(actual_tensor_shape.as_list(), shape)

    def GetAccumulatorForInputAtIndex(while_op, idx):
      body_graph = while_v2._get_graph(while_op, "body")
      y_input_t = body_graph.inputs[idx]
      push_back_node = [c for c in y_input_t.consumers()
                        if c.type == "TensorListPushBack"][0]
      output_idx = body_graph.outputs.index(push_back_node.outputs[0])
      return while_op.outputs[output_idx]

    x = array_ops.placeholder(dtype=dtypes.float32, shape=shape)
    y = array_ops.placeholder(dtype=dtypes.float32, shape=shape)

    # Forward pass.
    ret = while_loop_v2(lambda v, u: v < 8.,
                        lambda v, u: (math_ops.pow(v, u), u),
                        [x, y],
                        return_same_structure=True)
    while_op = ret[0].op.inputs[0].op
    # Gradient pass.
    grad = gradients_impl.gradients(ret[0], x)
    # Note: There is an Identity b/w grad[0] and the While op.
    grad_while_op = grad[0].op.inputs[0].op

    # Get the TensorList output of While op containing the accumulated values
    # of y.
    x_input_index = [i for i, inp in enumerate(while_op.inputs) if x == inp][0]
    output = GetAccumulatorForInputAtIndex(while_op, x_input_index)
    _, val = list_ops.tensor_list_pop_back(output,
                                           element_dtype=dtypes.float32)
    MatchShape(val.shape)

    # Take second derivative to generate intermediate grad_while_op outputs
    gradients_impl.gradients(grad, x)

    # Get the TensorList output of gradient While op containing the accumulated
    # values of grad_x (note that grad_x is needed by the second derivative).
    # grad_while_op.inputs:
    grad_output_index = grad_while_op.outputs.index(grad[0].op.inputs[0])
    grad_output = GetAccumulatorForInputAtIndex(grad_while_op,
                                                grad_output_index)
    _, val = list_ops.tensor_list_pop_back(grad_output,
                                           element_dtype=dtypes.float32)
    MatchShape(val.shape)
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:54,代码来源:while_v2_test.py


示例13: testReturnSameStructureTrue

 def testReturnSameStructureTrue(self):
   x = constant_op.constant(2.)
   ret = while_loop_v2(
       lambda v: v < 8., lambda v: v * v, [x], return_same_structure=True)
   grad = gradients_impl.gradients(ret, [x])
   with self.cached_session() as sess:
     eval_result = sess.run(ret)
     self.assertIsInstance(eval_result, list)
     self.assertLen(eval_result, 1)
     self.assertEqual(16., eval_result[0])
     self.assertSequenceEqual(sess.run(grad), [32.])
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:11,代码来源:while_v2_test.py


示例14: Body

    def Body(row, ta, n):

      def InnerBody(row, col, ta, n):
        # Note: row and col are 1-based.
        ta = ta.write(
            math_ops.cast(n * (row - 1.) + col - 1., dtypes.int32), row * col)
        return row, col + 1., ta, n

      # TODO(b/118457764): Remove n from loop_vars from both loops once fixed.
      ta = while_loop_v2(lambda _, col, _1, n: col <= n, InnerBody,
                         [row, constant_op.constant(1.), ta, n])[2]
      return row + 1., ta, n
开发者ID:JonathanRaiman,项目名称:tensorflow,代码行数:12,代码来源:while_v2_test.py


示例15: testIdentityNodeInBody

  def testIdentityNodeInBody(self):

    def Body(v):
      v = array_ops.identity(v)
      v = array_ops.identity(v)
      return v * v

    x = constant_op.constant(2.)
    ret = while_loop_v2(lambda v: v < 8., Body, [x])
    grad = gradients_impl.gradients(ret, [x])
    with self.cached_session() as sess:
      self.assertEqual(self.evaluate(ret), 16.)
      self.assertSequenceEqual(self.evaluate(grad), [32.])
开发者ID:JonathanRaiman,项目名称:tensorflow,代码行数:13,代码来源:while_v2_test.py


示例16: testExternalControlDependencies

  def testExternalControlDependencies(self):
    with ops.Graph().as_default(), self.test_session():
      v = variables.Variable(1.)
      v.initializer.run()
      op = v.assign_add(1.)

      def body_fn(i):  # pylint: disable=invalid-name
        with ops.control_dependencies([op]):
          return i + 1

      loop = while_loop_v2(lambda i: i < 1, body_fn, [0])
      loop[0].op.run()
      self.assertAllEqual(self.evaluate(v), 2.0)
开发者ID:adit-chandra,项目名称:tensorflow,代码行数:13,代码来源:while_v2_test.py


示例17: testAccumulatorElementShape

  def testAccumulatorElementShape(self, shape):

    def MatchShape(actual_tensor_shape):
      # Compare the shapes, treating None dimensions as equal. We do not
      # directly check actual_tensor_shape and tf.TensorShape(shape) for
      # equality because tf.Dimension.__eq__ returns None if either dimension is
      # None.
      if shape is None:
        self.assertIsNone(actual_tensor_shape.dims)
      else:
        self.assertListEqual(actual_tensor_shape.as_list(), shape)

    def GetAccumulatorForInputAtIndex(while_op, idx):
      body_graph = while_v2._get_body_graph(while_op)
      y_input_t = body_graph.inputs[idx]
      push_back_node = [c for c in y_input_t.consumers()
                        if c.type == "TensorListPushBack"][0]
      output_idx = body_graph.outputs.index(push_back_node.outputs[0])
      return while_op.outputs[output_idx]

    x = constant_op.constant(2.)
    y = array_ops.placeholder(dtype=dtypes.float32, shape=shape)

    # Forward pass.
    ret = while_loop_v2(
        lambda v, u: v < 8.,
        lambda v, u: (v * v, u), [x, y],
        return_same_structure=False)
    while_op = ret[0].op.inputs[0].op
    # Get the TensorList output of While op containing the accumulated values
    # of y.
    # while_op.inputs: [counter_arg, x_arg, y_arg, *accumulators]
    output = GetAccumulatorForInputAtIndex(while_op, 2)
    _, val = list_ops.tensor_list_pop_back(output,
                                           element_dtype=dtypes.float32)
    MatchShape(val.shape)

    # Gradient pass.
    grad = gradients_impl.gradients(ret[1], y)
    grad_while_op = grad[0].op.inputs[0].op
    # Get the TensorList output of gradient While op containing the accumulated
    # values of grad_y.
    # grad_while_op.inputs:
    # [counter_arg, total_iters_arg, grad_x_arg, grad_y_arg, *other_args]
    grad_output = GetAccumulatorForInputAtIndex(grad_while_op, 3)
    _, val = list_ops.tensor_list_pop_back(grad_output,
                                           element_dtype=dtypes.float32)
    MatchShape(val.shape)
开发者ID:aeverall,项目名称:tensorflow,代码行数:48,代码来源:while_v2_test.py


示例18: testMultipleLoopVarsBasic

  def testMultipleLoopVarsBasic(self):
    x = constant_op.constant(5.)
    y = constant_op.constant(3.)

    # x = 5.
    # y = 3.
    # while x < 45.:
    #   x = x * y
    ret = while_loop_v2(lambda v, _: v < 45., lambda v, w: (v * w, w), [x, y])
    # ret = [x*y^2, y]

    # Note: This is simply d_ret[0]/d_x since d_ret[1]/d_x is 0.
    grad = gradients_impl.gradients(ret, [x])  # [2*x*y]
    with self.cached_session() as sess:
      self.assertSequenceEqual(sess.run(ret), [45., 3.])
      self.assertSequenceEqual(sess.run(grad), [9.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:16,代码来源:while_v2_test.py


示例19: testNestedWhile

  def testNestedWhile(self):
    # Compute sum of geometric progression: n^0 + n^1 + ... + n^m
    # We compute the pow using a while loop.
    n = constant_op.constant(3.)
    m = constant_op.constant(5.)
    sum_of_powers = constant_op.constant(0.)

    def Body(i, previous_sum):
      prod = constant_op.constant(1.)
      return i - 1., previous_sum + while_loop_v2(
          lambda c, _: c > 0, lambda c, v: (c - 1., v * n), [i, prod])[1]

    result = while_loop_v2(lambda i, _: i >= 0, Body, [m, sum_of_powers])[1]
    grad = gradients_impl.gradients(result, [n])
    with self.cached_session() as sess:
      self.assertEqual(self.evaluate(result), 364.)
      self.assertSequenceEqual(self.evaluate(grad), [547.])
开发者ID:JonathanRaiman,项目名称:tensorflow,代码行数:17,代码来源:while_v2_test.py


示例20: testLoopWithTensorListPushBack

  def testLoopWithTensorListPushBack(self):
    x = constant_op.constant(2.)

    tensor_list = list_ops.empty_tensor_list(
        element_dtype=dtypes.float32, element_shape=ScalarShape())

    def Cond(x, tl):
      del tl  # Unused for Cond.
      return x < 5.

    def Body(x, tl):
      tl = list_ops.tensor_list_push_back(tl, x)
      tl = list_ops.tensor_list_push_back(tl, constant_op.constant(100.))
      return x**2., tl

    ret = while_loop_v2(Cond, Body, [x, tensor_list])
    grad = gradients_impl.gradients(ret[0], x)
    with self.cached_session() as sess:
      self.assertEqual(sess.run(ret[0]), 16.)
      self.assertSequenceEqual(sess.run(grad), [32.])
开发者ID:ThunderQi,项目名称:tensorflow,代码行数:20,代码来源:while_v2_test.py



注:本文中的tensorflow.python.ops.while_v2.while_loop_v2函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python app.run函数代码示例发布时间:2022-05-27
下一篇:
Python weights_broadcast_ops.broadcast_weights函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap