MCPcopy Create free account
hub / github.com/davisking/dlib / test_copy_tensor_slice_cpu

Function test_copy_tensor_slice_cpu

dlib/test/dnn.cpp:2862–2928  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2860 }
2861 }
2862 void test_copy_tensor_slice_cpu()
2863 {
2864 using namespace dlib::tt;
2865 print_spinner();
2866 resizable_tensor dest(10, 9, 7, 15);
2867 resizable_tensor src1(10, 3, 7, 15);
2868 resizable_tensor src2(10, 3, 6, 12);
2869 resizable_tensor src3(10, 9, 7, 15);
2870 tt::tensor_rand rnd;
2871 rnd.fill_gaussian(dest);
2872 rnd.fill_gaussian(src1);
2873 rnd.fill_gaussian(src2);
2874 rnd.fill_gaussian(src3);
2875
2876 const resizable_tensor old_dest = dest;
2877
2878 cpu::copy_tensor(false, dest, 0, 0, 0, src1, 0, 0, 0, src1.k(), src1.nr(), src1.nc()); //full copy src1->dest
2879 cpu::copy_tensor(false, dest, src1.k(), 0, 0, src2, 0, 0, 0, src2.k(), src2.nr(), src2.nc()); //full copy src2->dest with offset of src1
2880 cpu::copy_tensor(false, dest, src1.k() + src2.k(), 1, 1, src3, 3, 1, 1, 3, src3.nr()-2, src3.nc()-2); //partial copy src3 into the rest place of dest
2881
2882
2883 for (long i = 0; i < dest.num_samples(); ++i)
2884 {
2885 for (long k = 0; k < dest.k(); ++k)
2886 {
2887 for (long r = 0; r < dest.nr(); ++r)
2888 {
2889 for (long c = 0; c < dest.nc(); ++c)
2890 {
2891 float old_dest_value = tensor_read_cpu(old_dest, i, k, r, c);
2892 float dest_value = tensor_read_cpu(dest, i, k, r, c);
2893 // first part is from src1
2894 if (k < src1.k())
2895 {
2896 float src_value = tensor_read_cpu(src1, i, k, r, c);
2897 DLIB_TEST(src_value == dest_value);
2898 }
2899 // second part is from src2
2900 else if (k < src1.k() + src2.k())
2901 {
2902 if (r < src2.nr() && c < src2.nc())
2903 {
2904 float src_value = tensor_read_cpu(src2, i, k - src1.k(), r, c);
2905 DLIB_TEST(src_value == dest_value);
2906 }
2907 else
2908 {
2909 DLIB_TEST(old_dest_value == dest_value);
2910 }
2911 }
2912 // third part is from src3
2913 else
2914 {
2915 if (r > 0 && c > 0 && r + 1 < src3.nr() && c + 1 < src3.nc())
2916 {
2917 float src_value = tensor_read_cpu(src3, i, k - src1.k() - src2.k() + 3, r, c);
2918 DLIB_TEST(src_value == dest_value);
2919 }

Callers 1

run_testsMethod · 0.85

Calls 7

print_spinnerFunction · 0.85
tensor_read_cpuFunction · 0.85
copy_tensorFunction · 0.50
kMethod · 0.45
nrMethod · 0.45
ncMethod · 0.45
num_samplesMethod · 0.45

Tested by

no test coverage detected