human
Complete the below
def make_sparse_random_conv2D(num_nonzero, input_space, output_space, kernel_shape, batch_size, subsample=(1, 1), border_mode='valid', message='', rng=None):

    ''''.. todo::
    WRITEME properly
    Creates a Conv2D with random kernels, where the randomly initialized
    values are sparse'
    '''

=====
Give me a the Python code you requested?
assistant
#Here is the Python code you requested.
    raise AssertionError("TODO:    I    think    this    is    a    bug--num_nonzero    determines    the    total    number    of    nonzero    elements    in    the    whole    kernel    stack,    not    the    number    of    non-zero    elements    per    kernel.    Investigate    what    it's    meant    to    do.")
    rng = make_np_rng(rng, default_sparse_seed, which_method=['randn', 'randint'])
    W = np.zeros((output_space.num_channels, input_space.num_channels, kernel_shape[0], kernel_shape[1]))
    def random_coord():
        return [rng.randint(dim) for dim in W.shape]
    for i in xrange(num_nonzero):
        (o, ch, r, c) = random_coord()
        while (W[(o, ch, r, c)] != 0):
            (o, ch, r, c) = random_coord()
        W[(o, ch, r, c)] = rng.randn()
    W = sharedX(W)
    return Conv2D(filters=W, batch_size=batch_size, input_space=input_space, output_axes=output_space.axes, subsample=subsample, border_mode=border_mode, filters_shape=W.get_value(borrow=True).shape, message=message)