def test_get_diagonal_subtensor_view(wrap=lambda a: a): x = numpy.arange(20).reshape(5, 4).astype('float32') x = wrap(x) xv01 = get_diagonal_subtensor_view(x, 0, 1) # test that it works in 2d assert numpy.all(numpy.asarray(xv01) == [[12, 9, 6, 3], [16, 13, 10, 7]]) x = numpy.arange(24).reshape(4, 3, 2) xv01 = get_diagonal_subtensor_view(x, 0, 1) xv02 = get_diagonal_subtensor_view(x, 0, 2) xv12 = get_diagonal_subtensor_view(x, 1, 2) # print 'x', x # print 'xv01', xv01 # print 'xv02', xv02 assert numpy.all( numpy.asarray(xv01) == [[[12, 13], [8, 9], [4, 5]], [[18, 19], [14, 15], [10, 11]]]) assert numpy.all( numpy.asarray(xv02) == [ [[6, 1], [8, 3], [10, 5]], [[12, 7], [14, 9], [16, 11]], [[18, 13], [20, 15], [22, 17]], ]) # diagonal views of each leading matrix is the same # as the slices out of the diagonal view of the entire 3d tensor for xi, xvi in zip(x, xv12): assert numpy.all(xvi == get_diagonal_subtensor_view(xi, 0, 1))
def test_get_diagonal_subtensor_view(wrap=lambda a: a): x = numpy.arange(20).reshape(5, 4).astype("float32") x = wrap(x) xv01 = get_diagonal_subtensor_view(x, 0, 1) # test that it works in 2d assert numpy.all(numpy.asarray(xv01) == [[12, 9, 6, 3], [16, 13, 10, 7]]) x = numpy.arange(24).reshape(4, 3, 2) xv01 = get_diagonal_subtensor_view(x, 0, 1) xv02 = get_diagonal_subtensor_view(x, 0, 2) xv12 = get_diagonal_subtensor_view(x, 1, 2) # print 'x', x # print 'xv01', xv01 # print 'xv02', xv02 assert numpy.all(numpy.asarray(xv01) == [[[12, 13], [8, 9], [4, 5]], [[18, 19], [14, 15], [10, 11]]]) assert numpy.all( numpy.asarray(xv02) == [[[6, 1], [8, 3], [10, 5]], [[12, 7], [14, 9], [16, 11]], [[18, 13], [20, 15], [22, 17]]] ) # diagonal views of each leading matrix is the same # as the slices out of the diagonal view of the entire 3d tensor for xi, xvi in zip(x, xv12): assert numpy.all(xvi == get_diagonal_subtensor_view(xi, 0, 1))