Beispiel #1
0
def test_to_sequence_basic(device_id):
    dev = cntk_device(device_id)
    x = C.input_variable((C.FreeDimension, 2))
    x_seq = C.to_sequence(x)
    assert len(x_seq.dynamic_axes) == 2

    x_data = np.asarray([[[1, 2], [-1000, -1000]], [[3, 4], [5, 6]]], dtype=np.float32)
    result = x_seq.eval({x : x_data}, device=dev)
    assert np.array_equal(result, x_data)

    x = C.input_variable((C.FreeDimension, 2, 3), is_sparse=True)
    x_seq_lens = C.input_variable(())
    x_seq = C.to_sequence(x, x_seq_lens)

    seq1_data = [[[0, 1, 1], [0, 1, 0]], [[1, 0, 0], [1, 0, 1]]]
    csr_seq1 = _to_csr(seq1_data)
    ndarrayview1 = C.NDArrayView.from_csr(csr_seq1, shape=(2, 2, 3), device=C.cpu())
    seq2_data = [[0, 1, 1], [1, 1, 0]]
    csr_seq2 = _to_csr([seq2_data, [[0, 0, 0], [0, 0, 0]]])
    ndarrayview2 = C.NDArrayView.from_csr(csr_seq2, shape=(2, 2, 3), device=C.cpu())

    x_data = C.Value.create(C.input_variable((2, 2, 3), is_sparse=True), [ndarrayview1, ndarrayview2], device=dev).data
    x_seq_lens_data = np.asarray([2, 1], dtype=np.float32)
    result = x_seq.eval({x : x_data, x_seq_lens : x_seq_lens_data}, device=dev, as_numpy=False)
    result_dense = _to_dense(result, True)
    assert np.array_equal(result_dense[0], seq1_data)
    assert np.array_equal(result_dense[1], [seq2_data])
Beispiel #2
0
def test_to_sequence_basic(device_id):
    dev = cntk_device(device_id)
    x = C.input_variable((C.FreeDimension, 2))
    x_seq = C.to_sequence(x)
    assert len(x_seq.dynamic_axes) == 2

    x_data = np.asarray([[[1, 2], [-1000, -1000]], [[3, 4], [5, 6]]], dtype=np.float32)
    result = x_seq.eval({x : x_data}, device=dev)
    assert np.array_equal(result, x_data)

    x = C.input_variable((C.FreeDimension, 2, 3), is_sparse=True)
    x_seq_lens = C.input_variable(())
    x_seq = C.to_sequence(x, x_seq_lens)

    seq1_data = [[[0, 1, 1], [0, 1, 0]], [[1, 0, 0], [1, 0, 1]]]
    csr_seq1 = _to_csr(seq1_data)
    ndarrayview1 = C.NDArrayView.from_csr(csr_seq1, shape=(2, 2, 3), device=C.cpu())
    seq2_data = [[0, 1, 1], [1, 1, 0]]
    csr_seq2 = _to_csr([seq2_data, [[0, 0, 0], [0, 0, 0]]])
    ndarrayview2 = C.NDArrayView.from_csr(csr_seq2, shape=(2, 2, 3), device=C.cpu())

    x_data = C.Value.create(C.input_variable((2, 2, 3), is_sparse=True), [ndarrayview1, ndarrayview2], device=dev).data
    x_seq_lens_data = np.asarray([2, 1], dtype=np.float32)
    result = x_seq.eval({x : x_data, x_seq_lens : x_seq_lens_data}, device=dev, as_numpy=False)
    result_dense = _to_dense(result, True)
    assert np.array_equal(result_dense[0], seq1_data)
    assert np.array_equal(result_dense[1], [seq2_data])
Beispiel #3
0
def test_2d_non_sequence_sparse_one_hot():
    x = C.input_variable((2,))
    num_classes = 3
    sparse_one_hot = C.one_hot(x, num_classes, sparse_output=True)
    indices = np.asarray([[2, 1], [0, 2], [1, 0]])
    result = sparse_one_hot.eval({x : indices}, as_numpy=False)

    result_dense = _to_dense(result)
    assert np.array_equal(result_dense, np.eye(num_classes, dtype=np.float32)[indices])
def test_2d_non_sequence_sparse_one_hot():
    x = C.input_variable((2, ))
    num_classes = 3
    sparse_one_hot = C.one_hot(x, num_classes, sparse_output=True)
    indices = np.asarray([[2, 1], [0, 2], [1, 0]])
    result = sparse_one_hot.eval({x: indices}, as_numpy=False)

    result_dense = _to_dense(result)
    assert np.array_equal(result_dense,
                          np.eye(num_classes, dtype=np.float32)[indices])
def test_2d_sparse_sequences_value(device_id):
    dev = cntk_device(device_id)
    seq1_data = [[[0, 1, 1], [0, 1, 0]], [[1, 0, 0], [1, 0, 1]]]
    csr_seq1 = _to_csr(seq1_data)
    ndarrayview1 = C.NDArrayView.from_csr(csr_seq1, shape=(2, 2, 3), device=C.cpu())
    seq2_data = [[0, 1, 1], [1, 1, 0]]
    csr_seq2 = _to_csr(seq2_data)
    ndarrayview2 = C.NDArrayView.from_csr(csr_seq2, shape=(1, 2, 3), device=C.cpu())

    x = C.sequence.input_variable((2, 3))
    sequence_value = C.Value.create(x, [ndarrayview1, ndarrayview2], device=dev)
    assert np.array_equal(_to_dense(sequence_value.data), [seq1_data, [seq2_data, [[0, 0, 0], [0, 0, 0]]]])
def test_ndarrayview_from_csr(device_id):
    dev = cntk_device(device_id)
    data = [[[0, 1, 1], [0, 1, 0]], [[1, 0, 0], [1, 0, 1]]]
    csr_data = _to_csr(data)
    ndarrayview = C.NDArrayView.from_csr(csr_data, shape=(2, 2, 3))
    assert np.array_equal(_to_dense(ndarrayview), data)

    with pytest.raises(ValueError):
        ndarrayview = C.NDArrayView.from_csr(csr_data, shape=(3, 2, 3))

    with pytest.raises(ValueError):
        ndarrayview = C.NDArrayView.from_csr(csr_data, shape=(2, 2, 4))
Beispiel #7
0
def test_2d_sequence_sparse_one_hot():
    x = C.sequence.input((2, ))
    num_classes = 3
    sparse_one_hot = C.one_hot(x, num_classes, sparse_output=True)
    indices = [np.asarray([[2, 1], [0, 2]]), np.asarray([[1, 0]])]
    result = sparse_one_hot.eval({x: indices}, as_numpy=False)

    result_dense = _to_dense(result, True)
    assert np.array_equal(result_dense[0],
                          np.eye(num_classes, dtype=np.float32)[indices[0]])
    assert np.array_equal(result_dense[1],
                          np.eye(num_classes, dtype=np.float32)[indices[1]])