burn-tensor 0.16.1

Tensor library with user-friendly APIs and automatic differentiation support
Documentation
#[burn_tensor_testgen::testgen(padding)]
mod tests {
    use super::*;
    use burn_tensor::{
        as_type,
        backend::Backend,
        tests::{Float as _, Int as _},
        Numeric, Shape, Tensor, TensorData,
    };

    #[test]
    fn padding_2d_test() {
        let unpadded_floats: [[f32; 3]; 2] = [[0.0, 1.0, 2.0], [3.0, 4.0, 5.0]];
        let tensor = TestTensor::<2>::from(unpadded_floats);

        let padded_tensor = tensor.pad((2, 2, 2, 2), FloatType::new(1.1));

        let expected = TensorData::from(as_type!(FloatType: [
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 0.0, 1.0, 2.0, 1.1, 1.1],
            [1.1, 1.1, 3.0, 4.0, 5.0, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
        ]));
        padded_tensor.into_data().assert_eq(&expected, false);
    }

    #[test]
    fn padding_4d_test() {
        let unpadded_floats = [[[[0.0, 1.0], [2.0, 3.0], [4.0, 5.0]]]];
        let tensor = TestTensor::<4>::from(unpadded_floats);

        let padded_tensor = tensor.pad((2, 2, 2, 2), FloatType::new(1.1));

        let expected = TensorData::from(as_type!(FloatType: [[[
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 0.0, 1.0, 1.1, 1.1],
            [1.1, 1.1, 2.0, 3.0, 1.1, 1.1],
            [1.1, 1.1, 4.0, 5.0, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1, 1.1],
        ]]]));
        padded_tensor.into_data().assert_eq(&expected, false);
    }

    #[test]
    fn padding_asymmetric_test() {
        let unpadded_floats = [[[[0.0, 1.0], [2.0, 3.0], [4.0, 5.0]]]];
        let tensor = TestTensor::<4>::from(unpadded_floats);

        let padded_tensor = tensor.pad((2, 1, 4, 3), FloatType::new(1.1));

        let expected = TensorData::from(as_type!(FloatType: [[[
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 0.0, 1.0, 1.1],
            [1.1, 1.1, 2.0, 3.0, 1.1],
            [1.1, 1.1, 4.0, 5.0, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
            [1.1, 1.1, 1.1, 1.1, 1.1],
        ]]]));
        padded_tensor.into_data().assert_eq(&expected, false);
    }

    #[test]
    fn padding_asymmetric_integer_test() {
        let unpadded_ints = [[[[0, 1], [2, 3], [4, 5]]]];

        let tensor = TestTensorInt::<4>::from(unpadded_ints);
        let padded_tensor = tensor.pad((2, 1, 4, 3), IntType::new(6));

        let padded_primitive_data_expected = [[[
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 0, 1, 6],
            [6, 6, 2, 3, 6],
            [6, 6, 4, 5, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
        ]]];
        let expected = TensorData::from(as_type!(IntType: [[[
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 0, 1, 6],
            [6, 6, 2, 3, 6],
            [6, 6, 4, 5, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
            [6, 6, 6, 6, 6],
        ]]]));
        padded_tensor.into_data().assert_eq(&expected, false);
    }
}