Beispiel #1
0
    def verify_sparse_to_dense(sparse_indices, sparse_values, default_value, output_shape, xpected):
        sparse_indices_data = np.array(sparse_indices)
        sparse_values_data = np.array(sparse_values)
        default_value_data = np.array(default_value)

        a = relay.var("a", relay.TensorType(sparse_indices_data.shape, str(sparse_indices_data.dtype)))
        b = relay.var("b", relay.TensorType(sparse_values_data.shape, str(sparse_values_data.dtype)))
        if default_value is None:
            args = [a, b]
            d = relay.sparse_to_dense(a, output_shape, b)
        else:
            c = relay.var("c", relay.TensorType(default_value_data.shape, str(default_value_data.dtype)))
            args = [a, b, c]
            d = relay.sparse_to_dense(a, output_shape, b, c)

        zz = run_infer_type(d)
        assert zz.checked_type == relay.ty.TensorType(output_shape, str(sparse_values_data.dtype))

        func = relay.Function(args, d)
        for target, ctx in tvm.testing.enabled_targets():
            for kind in ["graph", "debug"]:
                intrp = relay.create_executor(kind, ctx=ctx, target=target)
                if default_value is None:
                    op_res = intrp.evaluate(func)(sparse_indices_data, sparse_values_data)
                else:
                    op_res = intrp.evaluate(func)(
                        sparse_indices_data, sparse_values_data, default_value_data
                    )
                tvm.testing.assert_allclose(op_res.asnumpy(), xpected, rtol=1e-5)
Beispiel #2
0
    def verify_sparse_to_dense(sparse_indices, sparse_values, default_value,
                               output_shape, xpected):
        sparse_indices_data = np.array(sparse_indices)
        sparse_values_data = np.array(sparse_values)
        default_value_data = np.array(default_value)
        output_shape_data = np.array(output_shape)

        a = relay.var(
            "a",
            relay.TensorType(sparse_indices_data.shape,
                             str(sparse_indices_data.dtype)))
        b = relay.var(
            "b",
            relay.TensorType(sparse_values_data.shape,
                             str(sparse_values_data.dtype)))
        output_shape_var = relay.var(
            "output_shape",
            relay.TensorType(output_shape_data.shape,
                             str(output_shape_data.dtype)))
        if default_value is None:
            args = [a, b, output_shape_var]
            d = relay.sparse_to_dense(a, output_shape_var, b)
        else:
            c = relay.var(
                "c",
                relay.TensorType(default_value_data.shape,
                                 str(default_value_data.dtype)))
            args = [a, b, c, output_shape_var]
            d = relay.sparse_to_dense(a, output_shape_var, b, c)

        zz = run_infer_type(d)
        assert len(zz.checked_type.shape) == len(output_shape)

        func = relay.Function(args, d)

        if default_value is None:
            arguments = [
                sparse_indices_data, sparse_values_data, output_shape_data
            ]
        else:
            arguments = [
                sparse_indices_data,
                sparse_values_data,
                default_value_data,
                output_shape_data,
            ]

        verify_func(executor_kind, func, arguments, xpected)
    def verify_sparse_to_dense(sparse_indices, sparse_values, default_value,
                               output_shape, xpected):
        sparse_indices_data = np.array(sparse_indices)
        sparse_values_data = np.array(sparse_values)
        default_value_data = np.array(default_value)
        output_shape_data = np.array(output_shape)

        a = relay.var(
            "a",
            relay.TensorType(sparse_indices_data.shape,
                             str(sparse_indices_data.dtype)))
        b = relay.var(
            "b",
            relay.TensorType(sparse_values_data.shape,
                             str(sparse_values_data.dtype)))
        output_shape_const = relay.const(output_shape_data)

        if default_value is None:
            args = [a, b]
            d = relay.sparse_to_dense(a, output_shape_const, b)
        else:
            c = relay.var(
                "c",
                relay.TensorType(default_value_data.shape,
                                 str(default_value_data.dtype)))
            args = [a, b, c]
            d = relay.sparse_to_dense(a, output_shape_const, b, c)

        zz = run_infer_type(d)
        assert len(zz.checked_type.shape) == len(output_shape)

        func = relay.Function(args, d)

        func2 = run_opt_pass(run_opt_pass(func, transform.DynamicToStatic()),
                             transform.InferType())
        assert isinstance(func2.body, relay.Call)
        assert func2.body.op == relay.op.get("sparse_to_dense")

        if default_value is None:
            arguments = [sparse_indices_data, sparse_values_data]
        else:
            arguments = [
                sparse_indices_data, sparse_values_data, default_value_data
            ]

        verify_func(func2, arguments, xpected)