예제 #1
0
 def testConvertNumpyArrayError(self,
                                value,
                                message,
                                dtype=None,
                                preferred_dtype=None):
   with self.assertRaisesRegexp(ValueError, message):
     ragged.convert_to_tensor_or_ragged_tensor(value, dtype, preferred_dtype)
예제 #2
0
    def testBinaryElementwiseOp(self, x, y, op=math_ops.add, **extra_args):
        use_kwargs = extra_args.pop('use_kwargs', ())
        x = ragged.convert_to_tensor_or_ragged_tensor(x)
        y = ragged.convert_to_tensor_or_ragged_tensor(y)
        if 'x' in use_kwargs and 'y' in use_kwargs:
            result = op(x=x, y=y, **extra_args)
        elif 'y' in use_kwargs:
            result = op(x, y=y, **extra_args)
        else:
            result = op(x, y, **extra_args)

        # Run the wrapped op on the dense values, for comparison.
        dense_x = x.flat_values if isinstance(x, ragged.RaggedTensor) else x
        dense_y = y.flat_values if isinstance(y, ragged.RaggedTensor) else y
        expected_flat_values = array_ops.reshape(
            op(dense_x, dense_y, **extra_args), [-1])

        # Check that the result has the expected shape.
        self.assertSameShape(y, result)

        # Check that the result has the expected (flattened) values.
        if isinstance(result, ragged.RaggedTensor):
            result_flat_values = array_ops.reshape(result.flat_values, [-1])
        else:
            result_flat_values = array_ops.reshape(result, [-1])
        self.assertAllEqual(expected_flat_values, result_flat_values)
  def testBinaryOp(self, x, y, op=ragged.add, **extra_args):
    use_kwargs = extra_args.pop('use_kwargs', False)
    x = ragged.convert_to_tensor_or_ragged_tensor(x)
    y = ragged.convert_to_tensor_or_ragged_tensor(y)
    if use_kwargs:
      result = op(x=x, y=y, **extra_args)
    else:
      result = op(x, y, **extra_args)

    # Run the wrapped op on the dense values, for comparison.
    dense_x = x.inner_values if isinstance(x, ragged.RaggedTensor) else x
    dense_y = y.inner_values if isinstance(y, ragged.RaggedTensor) else y
    expected_flat_values = array_ops.reshape(
        op.__wrapped__(dense_x, dense_y, **extra_args), [-1])

    with self.test_session():
      # Check that the result has the expected shape.
      self.assertSameShape(y, result)

      # Check that the result has the expected (flattened) values.
      if isinstance(result, ragged.RaggedTensor):
        result_flat_values = array_ops.reshape(result.inner_values, [-1])
      else:
        result_flat_values = array_ops.reshape(result, [-1])
      self.assertAllEqual(expected_flat_values, result_flat_values)
 def testConvertNumpyArrayError(self,
                                value,
                                message,
                                dtype=None,
                                preferred_dtype=None):
   with self.assertRaisesRegexp(ValueError, message):
     ragged.convert_to_tensor_or_ragged_tensor(value, dtype, preferred_dtype)
예제 #5
0
 def testConvertTensorError(self,
                            pylist,
                            message,
                            dtype=None,
                            preferred_dtype=None):
   tensor = constant_op.constant(pylist)
   with self.assertRaisesRegexp(ValueError, message):
     ragged.convert_to_tensor_or_ragged_tensor(tensor, dtype, preferred_dtype)
 def testConvertTensorError(self,
                            pylist,
                            message,
                            dtype=None,
                            preferred_dtype=None):
   tensor = constant_op.constant(pylist)
   with self.assertRaisesRegexp(ValueError, message):
     ragged.convert_to_tensor_or_ragged_tensor(tensor, dtype, preferred_dtype)
예제 #7
0
 def testRaggedAddWithBroadcasting(self, x, y, expected, doc):
   expected_rrank = getattr(expected, 'ragged_rank', 0)
   x = ragged.convert_to_tensor_or_ragged_tensor(x, dtype=dtypes.int32)
   y = ragged.convert_to_tensor_or_ragged_tensor(y, dtype=dtypes.int32)
   result = x + y
   result_rrank = getattr(result, 'ragged_rank', 0)
   self.assertEqual(expected_rrank, result_rrank)
   if hasattr(expected, 'tolist'):
     expected = expected.tolist()
   self.assertRaggedEqual(result, expected)
 def testRaggedAddWithBroadcasting(self, x, y, expected, doc):
   expected_rrank = getattr(expected, 'ragged_rank', 0)
   x = ragged.convert_to_tensor_or_ragged_tensor(x, dtype=dtypes.int32)
   y = ragged.convert_to_tensor_or_ragged_tensor(y, dtype=dtypes.int32)
   result = x + y
   result_rrank = getattr(result, 'ragged_rank', 0)
   self.assertEqual(expected_rrank, result_rrank)
   if hasattr(expected, 'tolist'):
     expected = expected.tolist()
   with self.cached_session():
     self.assertEqual(result.eval().tolist(), expected)
  def testListValuedOp(self, inputs, op=ragged.add_n, **extra_args):
    use_kwargs = extra_args.pop('use_kwargs', False)
    inputs = [ragged.convert_to_tensor_or_ragged_tensor(x) for x in inputs]
    if use_kwargs:
      result = op(inputs=inputs, **extra_args)
    else:
      result = op(inputs, **extra_args)

    # Run the wrapped op on the dense values, for comparison.
    dense_inputs = [
        x.inner_values if isinstance(x, ragged.RaggedTensor) else x
        for x in inputs
    ]
    expected_flat_values = array_ops.reshape(
        op.__wrapped__(dense_inputs, **extra_args), [-1])

    with self.test_session():
      # Check that the result has the expected shape.
      self.assertSameShape(inputs[0], result)

      # Check that the result has the expected (flattened) values.
      if isinstance(result, ragged.RaggedTensor):
        result_flat_values = array_ops.reshape(result.inner_values, [-1])
      else:
        result_flat_values = array_ops.reshape(result, [-1])
      self.assertAllEqual(expected_flat_values, result_flat_values)
예제 #10
0
 def testConvertRaggedTensor(self,
                             pylist,
                             dtype=None,
                             preferred_dtype=None):
     rt = ragged.constant(pylist)
     converted = ragged.convert_to_tensor_or_ragged_tensor(
         rt, dtype, preferred_dtype)
     self.assertIs(converted, rt)
예제 #11
0
 def testConvertNumpyArray(self,
                           value,
                           dtype=None,
                           preferred_dtype=None,
                           expected_dtype=None):
     if expected_dtype is None:
         expected_dtype = value.dtype if dtype is None else dtype
     converted = ragged.convert_to_tensor_or_ragged_tensor(
         value, dtype, preferred_dtype)
     self.assertEqual(dtypes.as_dtype(expected_dtype), converted.dtype)
     self.assertAllEqual(value, converted)
 def testConvertNumpyArray(self,
                           value,
                           dtype=None,
                           preferred_dtype=None,
                           expected_dtype=None):
   if expected_dtype is None:
     expected_dtype = value.dtype if dtype is None else dtype
   converted = ragged.convert_to_tensor_or_ragged_tensor(
       value, dtype, preferred_dtype)
   self.assertEqual(dtypes.as_dtype(expected_dtype), converted.dtype)
   with self.test_session():
     self.assertAllEqual(value, converted)
예제 #13
0
 def testConvertRaggedTensorValue(self,
                                  value,
                                  dtype=None,
                                  preferred_dtype=None,
                                  expected_dtype=None):
     if expected_dtype is None:
         expected_dtype = value.dtype if dtype is None else dtype
     converted = ragged.convert_to_tensor_or_ragged_tensor(
         value, dtype, preferred_dtype)
     self.assertEqual(value.ragged_rank, converted.ragged_rank)
     self.assertEqual(dtypes.as_dtype(expected_dtype), converted.dtype)
     self.assertEqual(value.to_list(), self.eval_to_list(converted))
 def testConvertRaggedTensorValue(self,
                                  value,
                                  dtype=None,
                                  preferred_dtype=None,
                                  expected_dtype=None):
   if expected_dtype is None:
     expected_dtype = value.dtype if dtype is None else dtype
   converted = ragged.convert_to_tensor_or_ragged_tensor(
       value, dtype, preferred_dtype)
   self.assertEqual(value.ragged_rank, converted.ragged_rank)
   self.assertEqual(dtypes.as_dtype(expected_dtype), converted.dtype)
   with self.test_session():
     self.assertEqual(value.tolist(), self.evaluate(converted).tolist())
예제 #15
0
    def testUnaryElementwiseOp(self, x, op=math_ops.abs, **extra_args):
        x = ragged.convert_to_tensor_or_ragged_tensor(x)
        result = op(x, **extra_args)

        # Run the wrapped op on the dense values, for comparison.
        dense_x = x.flat_values if isinstance(x, ragged.RaggedTensor) else x
        expected_flat_values = array_ops.reshape(op(dense_x, **extra_args),
                                                 [-1])

        # Check that the result has the expected shape.
        self.assertSameShape(x, result)

        # Check that the result has the expected (flattened) values.
        if isinstance(result, ragged.RaggedTensor):
            result_flat_values = array_ops.reshape(result.flat_values, [-1])
        else:
            result_flat_values = array_ops.reshape(result, [-1])
        self.assertAllEqual(expected_flat_values, result_flat_values)
  def testUnaryOp(self, x, op=ragged.abs, **extra_args):
    x = ragged.convert_to_tensor_or_ragged_tensor(x)
    result = op(x, **extra_args)

    # Run the wrapped op on the dense values, for comparison.
    dense_x = x.inner_values if isinstance(x, ragged.RaggedTensor) else x
    expected_flat_values = array_ops.reshape(
        op.__wrapped__(dense_x, **extra_args), [-1])

    with self.test_session():
      # Check that the result has the expected shape.
      self.assertSameShape(x, result)

      # Check that the result has the expected (flattened) values.
      if isinstance(result, ragged.RaggedTensor):
        result_flat_values = array_ops.reshape(result.inner_values, [-1])
      else:
        result_flat_values = array_ops.reshape(result, [-1])
      self.assertAllEqual(expected_flat_values, result_flat_values)
예제 #17
0
 def testElementwiseOpBroadcast(self, x, y, expected):
     x = ragged.convert_to_tensor_or_ragged_tensor(x, dtype=dtypes.int32)
     y = ragged.convert_to_tensor_or_ragged_tensor(y, dtype=dtypes.int32)
     result = x + y
     self.assertRaggedEqual(result, expected)
 def testConvertTensor(self, pylist, dtype=None, preferred_dtype=None):
   tensor = constant_op.constant(pylist)
   converted = ragged.convert_to_tensor_or_ragged_tensor(
       tensor, dtype, preferred_dtype)
   with self.test_session():
     self.assertIs(tensor, converted)
예제 #19
0
 def testConvertTensor(self, pylist, dtype=None, preferred_dtype=None):
     tensor = constant_op.constant(pylist)
     converted = ragged.convert_to_tensor_or_ragged_tensor(
         tensor, dtype, preferred_dtype)
     self.assertIs(tensor, converted)
 def testConvertRaggedTensor(self, pylist, dtype=None, preferred_dtype=None):
   rt = ragged.constant(pylist)
   converted = ragged.convert_to_tensor_or_ragged_tensor(
       rt, dtype, preferred_dtype)
   self.assertIs(converted, rt)
 def testBroadcastAdd(self, x, y, expected):
   x = ragged.convert_to_tensor_or_ragged_tensor(x, dtype=dtypes.int32)
   y = ragged.convert_to_tensor_or_ragged_tensor(y, dtype=dtypes.int32)
   result = x + y
   with self.cached_session():
     self.assertEqual(result.eval().tolist(), expected)
예제 #22
0
 def testBroadcastAdd(self, x, y, expected):
   x = ragged.convert_to_tensor_or_ragged_tensor(x, dtype=dtypes.int32)
   y = ragged.convert_to_tensor_or_ragged_tensor(y, dtype=dtypes.int32)
   result = x + y
   with self.cached_session():
     self.assertEqual(result.eval().tolist(), expected)