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)
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 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 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)
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 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)
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())
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)
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)
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 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)