def test_local_csm_properties_csm(): data = vector() indices, indptr, shape = (ivector(), ivector(), ivector()) mode = get_default_mode() mode = mode.including("specialize", "local_csm_properties_csm") for CS, cast in [ (sparse.CSC, sp.sparse.csc_matrix), (sparse.CSR, sp.sparse.csr_matrix), ]: f = aesara.function( [data, indices, indptr, shape], sparse.csm_properties(CS(data, indices, indptr, shape)), mode=mode, ) assert not any( isinstance(node.op, (sparse.CSM, sparse.CSMProperties)) for node in f.maker.fgraph.toposort()) v = cast(random_lil((10, 40), config.floatX, 3)) f(v.data, v.indices, v.indptr, v.shape)
def test_local_csm_grad_c(): data = vector() indices, indptr, shape = (ivector(), ivector(), ivector()) mode = get_default_mode() if aesara.config.mode == "FAST_COMPILE": mode = Mode(linker="c|py", optimizer="fast_compile") mode = mode.including("specialize", "local_csm_grad_c") for CS, cast in [ (sparse.CSC, sp.sparse.csc_matrix), (sparse.CSR, sp.sparse.csr_matrix), ]: cost = aet_sum(sparse.DenseFromSparse()(CS(data, indices, indptr, shape))) f = aesara.function( [data, indices, indptr, shape], aesara.grad(cost, data), mode=mode ) assert not any( isinstance(node.op, sparse.CSMGrad) for node in f.maker.fgraph.toposort() ) v = cast(random_lil((10, 40), config.floatX, 3)) f(v.data, v.indices, v.indptr, v.shape)