@Test
public void testFullThreeLayer() {

    // >>> w2 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
    // >>> w2
    // array([[ 1,  2,  3,  4],
    //        [ 5,  6,  7,  8],
    //        [ 9, 10, 11, 12],
    //        [13, 14, 15, 16]])
    //
    // >>> w3 = np.array([[1,2,3,4,5],[-6,-7,-8,-9,-10]])
    // >>> w3
    // array([[  1,   2,   3,   4,   5],
    //        [ -6,  -7,  -8,  -9, -10]])
    //
    // >>> x = np.array([[1],[1],[1],[1]])
    // >>> x
    // array([[1],
    //        [1],
    //        [1],
    //        [1]])
    //
    // >>> a2 = np.vstack([1, np.dot(w2, x)])
    // >>> a2
    // array([[ 1],
    //        [10],
    //        [26],
    //        [42],
    //        [58]])
    //
    // >>> a3 = np.dot(w3, a2)
    // >>> a3
    // array([[  557],
    //        [-1242]])
    NinjaMatrix w2 = new NinjaMatrix(4, 4, true,
            1, 2, 3, 4,
            5, 6, 7, 8,
            9, 10, 11, 12,
            13, 14, 15, 16
    );
    NinjaMatrix w3 = new NinjaMatrix(2, 5, true,
            1, 2, 3, 4, 5,
            -6, -7, -8, -9, -10
    );
    Network net = new Network(w2, w3);
    ColVector output = net.apply(1, 1, 1);
    assertEquals(2, output.numRows());
    assertEquals(1, output.numCols());
    assertEquals(1.0, output.get(0), 0.00001);
    assertEquals(0.0, output.get(1), 0.00001);
}