'Apply the motion kernel on the encoded_images.'

def _CrossConv(self, encoded_images):

    cross_conved_images = []
    kernels = tf.split(axis=3, num_or_size_splits=4, value=self.kernel)
    for (i, encoded_image) in enumerate(encoded_images):
        with tf.variable_scope(('cross_conv_%d' % i)):
            kernel = kernels[i]
            encoded_image = tf.unstack(encoded_image, axis=0)
            kernel = tf.unstack(kernel, axis=0)
            assert (len(encoded_image) == len(kernel))
            assert (len(encoded_image) == self.params['batch_size'])
            conved_image = []
            for j in xrange(len(encoded_image)):
                conved_image.append(self._CrossConvHelper(encoded_image[j], kernel[j]))
            cross_conved_images.append(tf.concat(axis=0, values=conved_image))
            sys.stderr.write(('cross_conved    shape:    %s\n' % cross_conved_images[(-1)].get_shape()))
    return cross_conved_images
