| 1611 | } |
| 1612 | |
| 1613 | void test_multiply_zero_padded() |
| 1614 | { |
| 1615 | print_spinner(); |
| 1616 | dlib::rand rnd; |
| 1617 | tt::tensor_rand trnd; |
| 1618 | for (int iter = 0; iter < 300; ++iter) |
| 1619 | { |
| 1620 | resizable_tensor dest1(rnd.get_random_32bit_number()%4+1, |
| 1621 | rnd.get_random_32bit_number()%4+1, |
| 1622 | rnd.get_random_32bit_number()%4+1, |
| 1623 | rnd.get_random_32bit_number()%4+1); |
| 1624 | resizable_tensor dest2; |
| 1625 | dest2.copy_size(dest1); |
| 1626 | resizable_tensor src1(rnd.get_random_32bit_number()%4+1, |
| 1627 | rnd.get_random_32bit_number()%4+1, |
| 1628 | rnd.get_random_32bit_number()%4+1, |
| 1629 | rnd.get_random_32bit_number()%4+1); |
| 1630 | resizable_tensor src2(rnd.get_random_32bit_number()%4+1, |
| 1631 | rnd.get_random_32bit_number()%4+1, |
| 1632 | rnd.get_random_32bit_number()%4+1, |
| 1633 | rnd.get_random_32bit_number()%4+1); |
| 1634 | |
| 1635 | trnd.fill_uniform(dest1); |
| 1636 | trnd.fill_uniform(dest2); |
| 1637 | trnd.fill_uniform(src1); |
| 1638 | trnd.fill_uniform(src2); |
| 1639 | cpu::multiply_zero_padded(false, dest1, src1, src2); |
| 1640 | cuda::multiply_zero_padded(false, dest2, src1, src2); |
| 1641 | DLIB_TEST(max(abs(mat(dest1) - mat(dest2))) < 1e-5); |
| 1642 | |
| 1643 | cpu::multiply_zero_padded(true, dest1, src1, src2); |
| 1644 | cuda::multiply_zero_padded(true, dest2, src1, src2); |
| 1645 | DLIB_TEST(max(abs(mat(dest1) - mat(dest2))) < 1e-5); |
| 1646 | } |
| 1647 | |
| 1648 | // make sure we have a test for the case where all tensors have the same |
| 1649 | // dimensions. |
| 1650 | resizable_tensor dest1(3,4,5,6); |
| 1651 | resizable_tensor dest2; |
| 1652 | resizable_tensor src1; |
| 1653 | resizable_tensor src2; |
| 1654 | dest2.copy_size(dest1); |
| 1655 | src1.copy_size(dest1); |
| 1656 | src2.copy_size(dest1); |
| 1657 | |
| 1658 | trnd.fill_uniform(dest1); |
| 1659 | trnd.fill_uniform(dest2); |
| 1660 | trnd.fill_uniform(src1); |
| 1661 | trnd.fill_uniform(src2); |
| 1662 | cpu::multiply_zero_padded(false, dest1, src1, src2); |
| 1663 | cuda::multiply_zero_padded(false, dest2, src1, src2); |
| 1664 | DLIB_TEST(max(abs(mat(dest1) - mat(dest2))) < 1e-5); |
| 1665 | |
| 1666 | cpu::multiply_zero_padded(true, dest1, src1, src2); |
| 1667 | cuda::multiply_zero_padded(true, dest2, src1, src2); |
| 1668 | DLIB_TEST(max(abs(mat(dest1) - mat(dest2))) < 1e-5); |
| 1669 | } |
| 1670 |
no test coverage detected