human
Complete the below
def make_sparse_random_conv2D(num_nonzero, input_space, output_space, kernel_shape, pad=0, kernel_stride=(1, 1), border_mode='valid', message='', rng=None, partial_sum=None):

    ''''.. todo::
    WRITEME properly
    Creates a Conv2D with random kernels, where the randomly initialized
    values are sparse'
    '''
 Can you provide a the Python program you requested?
assistant
#Here is the Python program you requested.
    rng = make_np_rng(rng, default_sparse_seed, which_method=['randn', 'randint'])
    W = np.zeros((input_space.num_channels, kernel_shape[0], kernel_shape[1], output_space.num_channels))
    def random_coord():
        return [rng.randint(dim) for dim in W.shape[0:3]]
    for o in xrange(output_space.num_channels):
        for i in xrange(num_nonzero):
            (ch, r, c) = random_coord()
            while (W[(ch, r, c, o)] != 0):
                (ch, r, c) = random_coord()
            W[(ch, r, c, o)] = rng.randn()
    W = sharedX(W)
    return Conv2D(filters=W, input_axes=input_space.axes, output_axes=output_space.axes, kernel_stride=kernel_stride, pad=pad, message=message, partial_sum=partial_sum)