codeislife99 commented on a change in pull request #7442:
URL: https://github.com/apache/tvm/pull/7442#discussion_r577141409



##########
File path: tests/python/relay/dyn/test_dynamic_op_level3.py
##########
@@ -202,5 +209,152 @@ def verify_sparse_to_dense(sparse_indices, sparse_values, 
default_value, output_
     verify_sparse_to_dense(1, 3, None, [5], [0, 3, 0, 0, 0])  # default value 
not specified
 
 
[email protected](
+    "sparse_indices, sparse_values, dense_shape, default_value",
+    [
+        (
+            np.array([[0, 1], [0, 3], [2, 0], [3, 1]], dtype=np.int64),
+            np.array([1, 2, 3, 4], dtype=np.int64),
+            np.array([5, 6], dtype=np.int64),
+            np.array([10], dtype=np.int64),
+        ),
+        (
+            np.array([[1, 1, 1], [1, 3, 1], [2, 0, 5], [3, 1, 6]], 
dtype=np.int64),
+            np.array([1, 2, 3, 4], dtype=np.int64),
+            np.array([7, 7, 7], dtype=np.int64),
+            np.array([5], dtype=np.int64),
+        ),
+        (
+            np.array([[1], [2]], dtype=np.int64),
+            np.array([7, 8], dtype=np.int64),
+            np.array([5], dtype=np.int64),
+            np.array([4], dtype=np.int64),
+        ),
+        (
+            np.ones((0, 1), dtype=np.int64),
+            np.array([], dtype=np.int64),
+            np.array([5], dtype=np.int64),
+            np.array([4], dtype=np.int64),
+        ),
+        (
+            np.ones((0, 3), dtype=np.int64),
+            np.array([], dtype=np.int64),
+            np.array([9, 3, 7], dtype=np.int64),
+            np.array([100], dtype=np.int64),
+        ),
+    ],
+)
[email protected]("dtype", [np.int32, np.int64])
[email protected]("use_dyn", [True, False])
+def test_sparse_fill_empty_rows(
+    sparse_indices, sparse_values, dense_shape, default_value, dtype, use_dyn
+):
+    def ref_sparse_fill_empty_rows(
+        sparse_indices: np.ndarray,
+        sparse_values: np.ndarray,
+        dense_shape: np.ndarray,
+        default_value: np.ndarray,
+    ) -> None:
+        """
+        This function calculates the expected output of sparse_fill_empty_rows 
operator given the
+        inputs.
+        """
+
+        def check_add_rows(current_idx, limit_idx):
+            while current_idx < limit_idx:
+                new_sparse_indices.append([current_idx] + [0] * (num_cols - 1))
+                new_sparse_values.append(default_value[0])
+                empty_row_indicator[current_idx] = 1
+                current_idx += 1
+
+            return current_idx
+
+        current_idx = 0
+        new_sparse_indices = []
+        new_sparse_values = []
+        empty_row_indicator = [0 for _ in range(dense_shape[0])]
+        num_cols = sparse_indices.shape[1]
+        for sparse_row, sparse_value in zip(sparse_indices, sparse_values):
+            limit_idx = sparse_row[0]
+            current_idx = check_add_rows(current_idx, limit_idx)
+            new_sparse_indices.append(list(sparse_row))
+            new_sparse_values.append(sparse_value)
+            current_idx = limit_idx + 1
+
+        check_add_rows(current_idx, dense_shape[0])
+        return new_sparse_indices, new_sparse_values, empty_row_indicator
+
+    def verify_sparse_fill_empty_rows(
+        sparse_indices_np: np.ndarray,
+        sparse_values_np: np.ndarray,
+        dense_shape_np: np.ndarray,
+        default_value_np: np.ndarray,
+    ) -> None:
+        """
+        This function verifies the relay output of sparse_fill_empty_rows with 
its expected output.
+        """
+        if use_dyn:
+            sparse_indices = relay.var(
+                "sparse_indices",
+                shape=[relay.Any(), relay.Any()],
+                dtype=str(sparse_indices_np.dtype),
+            )
+            sparse_values = relay.var(
+                "sparse_values",
+                shape=[relay.Any()],
+                dtype=str(sparse_values_np.dtype),
+            )
+            dense_shape = relay.var(
+                "dense_shape",
+                shape=[relay.Any()],
+                dtype=str(dense_shape_np.dtype),
+            )
+            default_value = relay.var(
+                "default_value",
+                shape=[relay.Any()],
+                dtype=str(default_value_np.dtype),
+            )
+        else:
+            sparse_indices = relay.var(
+                "sparse_indices",
+                relay.TensorType(sparse_indices_np.shape, 
str(sparse_indices_np.dtype)),
+            )
+            sparse_values = relay.var(
+                "sparse_values",
+                relay.TensorType(sparse_values_np.shape, 
str(sparse_values_np.dtype)),
+            )
+            dense_shape = relay.var(
+                "dense_shape",
+                relay.TensorType(dense_shape_np.shape, 
str(dense_shape_np.dtype)),
+            )
+            default_value = relay.var(
+                "default_value",
+                relay.TensorType(default_value_np.shape, 
str(default_value_np.dtype)),
+            )
+        z = relay.sparse_fill_empty_rows(
+            sparse_indices, sparse_values, dense_shape, default_value
+        ).astuple()
+        func = relay.Function([sparse_indices, sparse_values, dense_shape, 
default_value], z)
+        ref_res = ref_sparse_fill_empty_rows(
+            sparse_indices_np,
+            sparse_values_np,
+            dense_shape_np,
+            default_value_np,
+        )
+        verify_func(

Review comment:
       I have set the output dtype to int64 irrespective of input . Is this an 
issue ? 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to