def test_np_format_as_index2vector(): # Test 5 random batches for shape, number of non-zeros for _ in xrange(5): max_labels = np.random.randint(2, 10) batch_size = np.random.randint(1, 10) labels = np.random.randint(1, 10) batch = np.random.random_integers(max_labels - 1, size=(batch_size, labels)) index_space = IndexSpace(dim=labels, max_labels=max_labels) vector_space_merge = VectorSpace(dim=max_labels) vector_space_concatenate = VectorSpace(dim=max_labels * labels) merged = index_space.np_format_as(batch, vector_space_merge) concatenated = index_space.np_format_as(batch, vector_space_concatenate) assert merged.shape == (batch_size, max_labels) assert concatenated.shape == (batch_size, max_labels * labels) assert np.count_nonzero(merged) <= batch.size assert np.count_nonzero(concatenated) == batch.size assert np.all(np.unique(concatenated) == np.array([0, 1])) # Make sure Theano variables give the same result batch = tensor.lmatrix('batch') single = tensor.lvector('single') batch_size = np.random.randint(1, 10) np_batch = np.random.random_integers(max_labels - 1, size=(batch_size, labels)) np_single = np.random.random_integers(max_labels - 1, size=(labels)) f_batch_merge = theano.function( [batch], index_space._format_as_impl(False, batch, vector_space_merge) ) f_batch_concatenate = theano.function( [batch], index_space._format_as_impl(False, batch, vector_space_concatenate) ) f_single_merge = theano.function( [single], index_space._format_as_impl(False, single, vector_space_merge) ) f_single_concatenate = theano.function( [single], index_space._format_as_impl(False, single, vector_space_concatenate) ) np.testing.assert_allclose( f_batch_merge(np_batch), index_space._format_as_impl(True, np_batch, vector_space_merge) ) np.testing.assert_allclose( f_batch_concatenate(np_batch), index_space._format_as_impl(True, np_batch, vector_space_concatenate) ) np.testing.assert_allclose( f_single_merge(np_single), index_space._format_as_impl(True, np_single, vector_space_merge) ) np.testing.assert_allclose( f_single_concatenate(np_single), index_space._format_as_impl(True, np_single, vector_space_concatenate) )
def test_np_format_as_index2vector(): # Test 5 random batches for shape, number of non-zeros for _ in xrange(5): max_labels = np.random.randint(2, 10) batch_size = np.random.randint(1, 10) labels = np.random.randint(1, 10) batch = np.random.random_integers(max_labels - 1, size=(batch_size, labels)) index_space = IndexSpace(dim=labels, max_labels=max_labels) vector_space_merge = VectorSpace(dim=max_labels) vector_space_concatenate = VectorSpace(dim=max_labels * labels) merged = index_space.np_format_as(batch, vector_space_merge) concatenated = index_space.np_format_as(batch, vector_space_concatenate) if batch_size > 1: assert merged.shape == (batch_size, max_labels) assert concatenated.shape == (batch_size, max_labels * labels) else: assert merged.shape == (max_labels, ) assert concatenated.shape == (max_labels * labels, ) assert np.count_nonzero(merged) <= batch.size assert np.count_nonzero(concatenated) == batch.size assert np.all(np.unique(concatenated) == np.array([0, 1])) # Make sure Theano variables give the same result batch = tensor.lmatrix('batch') single = tensor.lvector('single') batch_size = np.random.randint(2, 10) np_batch = np.random.random_integers(max_labels - 1, size=(batch_size, labels)) np_single = np.random.random_integers(max_labels - 1, size=(labels)) f_batch_merge = theano.function([batch], index_space._format_as_impl( False, batch, vector_space_merge)) f_batch_concatenate = theano.function([batch], index_space._format_as_impl( False, batch, vector_space_concatenate)) f_single_merge = theano.function([single], index_space._format_as_impl( False, single, vector_space_merge)) f_single_concatenate = theano.function([single], index_space._format_as_impl( False, single, vector_space_concatenate)) np.testing.assert_allclose( f_batch_merge(np_batch), index_space._format_as_impl(True, np_batch, vector_space_merge)) np.testing.assert_allclose( f_batch_concatenate(np_batch), index_space._format_as_impl(True, np_batch, vector_space_concatenate)) np.testing.assert_allclose( f_single_merge(np_single), index_space._format_as_impl(True, np_single, vector_space_merge)) np.testing.assert_allclose( f_single_concatenate(np_single), index_space._format_as_impl(True, np_single, vector_space_concatenate))
def test_np_format_as_index2index(): index_space_initial = IndexSpace(max_labels=10, dim=1) index_space_final = IndexSpace(max_labels=10, dim=1) data = np.array([[0], [2], [1], [3], [5], [8], [1]]) rval = index_space_initial.np_format_as(data, index_space_final) assert index_space_initial == index_space_final assert np.all(rval == data) index_space_downcast = IndexSpace(max_labels=10, dim=1, dtype='int32') rval = index_space_initial.np_format_as(data, index_space_downcast) assert index_space_initial != index_space_downcast assert np.all(rval == data) assert rval.dtype == 'int32' and data.dtype == 'int64'