NAME

AI::MXNet::TestUtils - Convenience subs used in tests.

same

Test if two pdl arrays are the same

Parameters
----------
a : pdl
b : pdl

allclose

Test if all elements of two pdl arrays are almost equal

Parameters
----------
a : pdl
b : pdl

reldiff

Calculate the relative difference between two input arrays

Calculated by :math:`\\frac{|a-b|_1}{|a|_1 + |b|_1}`

Parameters
----------
a : pdl
b : pdl

almost_equal

Test if two pdl arrays are almost equal.

check_consistency

Check symbol gives the same output for different running context

Parameters
----------
sym : Symbol or list of Symbols
    symbol(s) to run the consistency test
ctx_list : list
    running context. See example for more detail.
scale : float, optional
    standard deviation of the inner normal distribution. Used in initialization
grad_req : str or list of str or dict of str to str
    gradient requirement.

same_array

Check whether two NDArrays sharing the same memory block

Parameters
----------

array1 : NDArray
    First NDArray to be checked
array2 : NDArray
    Second NDArray to be checked

Returns
-------
bool
    Whether two NDArrays share the same memory

rand_sparse_ndarray

Generate a random sparse ndarray. Returns the ndarray, value(np) and indices(np)

Parameters
----------
shape: list or tuple
stype: str, valid values: "csr" or "row_sparse"
density, optional: float, should be between 0 and 1
distribution, optional: str, valid values: "uniform" or "powerlaw"
dtype, optional: numpy.dtype, default value is None

Returns
-------
Result of type CSRNDArray or RowSparseNDArray

Examples
--------
Below is an example of the powerlaw distribution with csr as the stype.
It calculates the nnz using the shape and density.
It fills up the ndarray with exponentially increasing number of elements.
If there are enough unused_nnzs, n+1th row will have twice more nnzs compared to nth row.
else, remaining unused_nnzs will be used in n+1th row
If number of cols is too small and we have already reached column size it will fill up
all following columns in all followings rows until we reach the required density.

>>> csr_arr, _ = rand_sparse_ndarray(shape=(5, 16), stype="csr",
                                     density=0.50, distribution="powerlaw")
>>> indptr = csr_arr.indptr.asnumpy()
>>> indices = csr_arr.indices.asnumpy()
>>> data = csr_arr.data.asnumpy()
>>> row2nnz = len(data[indptr[1]:indptr[2]])
>>> row3nnz = len(data[indptr[2]:indptr[3]])
>>> assert(row3nnz == 2*row2nnz)
>>> row4nnz = len(data[indptr[3]:indptr[4]])
>>> assert(row4nnz == 2*row3nnz)