def testScan(self):
        with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
            out = ctc_ops._scan(lambda accum, elem: accum + elem,
                                constant_op.constant([1.0, 2.0, 3.0]), 23.0)
            self.assertAllEqual([24.0, 26.0, 29.0], out)

            out = ctc_ops._scan(lambda a, e: a + e,
                                constant_op.constant([1.0, 2.0, 3.0]),
                                23.0,
                                inclusive=True)
            self.assertAllEqual([23.0, 24.0, 26.0, 29.0], out)

            out = ctc_ops._scan(lambda a, e: a + e,
                                constant_op.constant([1.0, 2.0, 3.0]),
                                23.0,
                                reverse=True)
            self.assertAllEqual([29.0, 28.0, 26.0], out)

            out = ctc_ops._scan(lambda a, e: a + e,
                                constant_op.constant([1.0, 2.0, 3.0]),
                                23.0,
                                reverse=True,
                                inclusive=True)
            self.assertAllEqual([29.0, 28.0, 26.0, 23.0], out)

            out = ctc_ops._scan(
                lambda a, e: a + e,
                constant_op.constant([[0.0, 1.0], [2.0, 3.0], [4.0, 5.0]]),
                constant_op.constant([23.0, 24.0]))
            self.assertAllEqual([[23.0, 25.0], [25.0, 28.0], [29.0, 33.0]],
                                out)
  def testScan(self):
    with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
      out = ctc_ops._scan(
          lambda accum, elem: accum + elem,
          constant_op.constant([1.0, 2.0, 3.0]), 23.0)
      self.assertAllEqual([24.0, 26.0, 29.0], out)

      out = ctc_ops._scan(
          lambda a, e: a + e,
          constant_op.constant([1.0, 2.0, 3.0]), 23.0,
          inclusive=True)
      self.assertAllEqual([23.0, 24.0, 26.0, 29.0], out)

      out = ctc_ops._scan(
          lambda a, e: a + e,
          constant_op.constant([1.0, 2.0, 3.0]), 23.0,
          reverse=True)
      self.assertAllEqual([29.0, 28.0, 26.0], out)

      out = ctc_ops._scan(
          lambda a, e: a + e,
          constant_op.constant([1.0, 2.0, 3.0]), 23.0,
          reverse=True,
          inclusive=True)
      self.assertAllEqual([29.0, 28.0, 26.0, 23.0], out)

      out = ctc_ops._scan(
          lambda a, e: a + e,
          constant_op.constant([[0.0, 1.0], [2.0, 3.0], [4.0, 5.0]]),
          constant_op.constant([23.0, 24.0]))
      self.assertAllEqual([[23.0, 25.0], [25.0, 28.0], [29.0, 33.0]], out)
Exemple #3
0
 def testScanCapturesVariables(self):
   with self.cached_session() as sess:
     x = random_ops.random_uniform([])
     fn = lambda accum, elem: accum + x * elem
     out = ctc_ops._scan(fn, constant_op.constant([0.0, 1.0, 2.0]), 23.0)
     self.assertAllEqual(*sess.run([
         [23.0 + x * 0.0, 23.0 + x * 1.0, 23.0 + x * 3.0], out
     ]))
 def testScanCapturesVariables(self):
   with self.cached_session() as sess:
     x = random_ops.random_uniform([])
     fn = lambda accum, elem: accum + x * elem
     out = ctc_ops._scan(fn, constant_op.constant([0.0, 1.0, 2.0]), 23.0)
     self.assertAllClose(*sess.run([
         [23.0 + x * 0.0, 23.0 + x * 1.0, 23.0 + x * 3.0], out
     ]))
Exemple #5
0
 def testScanMultipleAccumulators(self):
   with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
     def fn(accum, elem):
       accum_a, accum_b = accum
       return accum_a + elem, accum_b * elem
     out = ctc_ops._scan(
         fn, constant_op.constant([1.0, 2.0, 3.0]),
         (23.0, constant_op.constant([1.0, 2.0])))
     a, b = out
     self.assertAllEqual([24.0, 26.0, 29.0], a)
     self.assertAllEqual([[1.0, 2.0], [2.0, 4.0], [6.0, 12.0]], b)
 def testScanMultipleAccumulators(self):
   with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
     def fn(accum, elem):
       accum_a, accum_b = accum
       return accum_a + elem, accum_b * elem
     out = ctc_ops._scan(
         fn, constant_op.constant([1.0, 2.0, 3.0]),
         (23.0, constant_op.constant([1.0, 2.0])))
     a, b = out
     self.assertAllEqual([24.0, 26.0, 29.0], a)
     self.assertAllEqual([[1.0, 2.0], [2.0, 4.0], [6.0, 12.0]], b)
Exemple #7
0
 def testScanMultipleElements(self):
   with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
     def fn(accum, elem):
       elem_a, elem_b = elem
       return accum + (elem_a * elem_b)
     elems_a = constant_op.constant([1.0, 2.0, 3.0])
     elems_b = constant_op.constant([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0]])
     out = ctc_ops._scan(
         fn, (elems_a, elems_b),
         initial=constant_op.constant([0.0, 0.0]))
     self.assertAllEqual(
         [[1.0, 2.0], [5.0, 8.0], [14.0, 20.0]], out)
 def testScanMultipleElements(self):
   with ops.device("/GPU:0" if test.is_gpu_available() else "/CPU:0"):
     def fn(accum, elem):
       elem_a, elem_b = elem
       return accum + (elem_a * elem_b)
     elems_a = constant_op.constant([1.0, 2.0, 3.0])
     elems_b = constant_op.constant([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0]])
     out = ctc_ops._scan(
         fn, (elems_a, elems_b),
         initial=constant_op.constant([0.0, 0.0]))
     self.assertAllEqual(
         [[1.0, 2.0], [5.0, 8.0], [14.0, 20.0]], out)