Exemple #1
0
def test_nested_value_2():
    npr.seed(11)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X, axis=1)
        Z = kayak.MatMean(Y)

        assert np.all(close_float(Y.value.ravel(), np.mean(npX, axis=1)))
        assert close_float(Z.value, np.mean(npX))
Exemple #2
0
def test_keepdims_value_1():
    npr.seed(9)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X, axis=0, keepdims=False)
        Z = kayak.MatMean(Y)

        assert Y.shape == np.mean(npX, axis=0, keepdims=False).shape
        assert np.all(
            close_float(Y.value, np.mean(npX, axis=0, keepdims=False)))
        assert close_float(Z.value, np.mean(npX))
Exemple #3
0
def test_keepdims_grad_2():
    npr.seed(10)

    for ii in xrange(NUM_TRIALS):
        npW = npr.randn(5, 10, 20)
        npX = npr.randn(5, 10, 20)
        W = kayak.Parameter(npW)
        X = kayak.Parameter(npX)
        Y = W * X
        Z = kayak.MatMean(Y, axis=2, keepdims=False)
        S = kayak.MatMean(Z)

        assert S.grad(W).shape == npW.shape
        assert_less(kayak.util.checkgrad(X, S), MAX_GRAD_DIFF)
Exemple #4
0
def test_keepdims_grad_1():
    npr.seed(10)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X, axis=0, keepdims=False)
        Z = kayak.MatMean(Y)

        assert Z.grad(X).shape == npX.shape
        assert np.all(
            close_float(Z.grad(X),
                        1.0 / float(np.prod(npX.shape)) * np.ones(npX.shape)))
        assert_less(kayak.util.checkgrad(X, Z), MAX_GRAD_DIFF)
Exemple #5
0
def test_vector_value_1():
    npr.seed(3)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 1)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)
        # Verify the sum.
        assert close_float(Y.value, np.mean(npX))
Exemple #6
0
def test_matrix_value():
    npr.seed(7)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        # Verify the value.
        assert close_float(Y.value, np.mean(npX))
Exemple #7
0
def test_scalar_value():
    npr.seed(1)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn()
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        # Verify that a scalar is reproduced.
        assert close_float(Y.value, npX)
Exemple #8
0
def test_tensor_value_4():
    npr.seed(16)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20, 30)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X, axis=0)

        assert np.all(
            close_float(Y.value, np.expand_dims(np.mean(npX, axis=0), axis=0)))
Exemple #9
0
def test_tensor_value_1():
    npr.seed(13)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20, 30)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        assert X.shape == npX.shape
        assert close_float(Y.value, np.mean(npX))
Exemple #10
0
def test_scalar_grad():
    npr.seed(2)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn()
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        # Verify that the gradient is one.
        Y.value
        assert Y.grad(X) == 1.0
        assert_less(kayak.util.checkgrad(X, Y), MAX_GRAD_DIFF)
Exemple #11
0
def test_vector_grad_1():
    npr.seed(4)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 1)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        # Verify the gradient.
        Y.value
        assert Y.grad(X).shape == npX.shape
        assert np.all(
            close_float(Y.grad(X), 1.0 / float(npX.size) * np.ones(npX.shape)))
        assert_less(kayak.util.checkgrad(X, Y), MAX_GRAD_DIFF)
Exemple #12
0
def test_matrix_grad():
    npr.seed(8)

    for ii in xrange(NUM_TRIALS):
        npX = npr.randn(10, 20)
        X = kayak.Parameter(npX)
        Y = kayak.MatMean(X)

        # Verify the value.
        Y.value
        assert Y.grad(X).shape == npX.shape
        assert np.all(
            close_float(Y.grad(X),
                        1.0 / float(np.prod(npX.shape)) * np.ones(npX.shape)))
        assert_less(kayak.util.checkgrad(X, Y), MAX_GRAD_DIFF)