

def perform(self, node, inputs, outputs):
    (a_indices, a_indptr, b, g_ab) = inputs
    (out,) = outputs
    g_a_data = numpy.zeros(a_indices.shape, dtype=g_ab.dtype)
    for j in xrange((len(a_indptr) - 1)):
        ind0 = a_indptr[j]
        ind1 = a_indptr[(j + 1)]
        for i_idx in xrange(ind0, ind1):
            i = a_indices[i_idx]
            dot_val = numpy.dot(g_ab[i], b[j].T)
            if isinstance(dot_val, scipy.sparse.spmatrix):
                dot_val = dot_val[(0, 0)]
            g_a_data[i_idx] = dot_val
    out[0] = g_a_data

dataset/ETHPy150Open rizar/attention-lvcsr/libs/Theano/theano/sparse/basic.py StructuredDotGradCSC.perform/original