| 1956 | } |
| 1957 | |
| 1958 | void compare_bn_conv_gpu_and_cpu() |
| 1959 | { |
| 1960 | print_spinner(); |
| 1961 | resizable_tensor dest, dest2; |
| 1962 | resizable_tensor means, means2; |
| 1963 | resizable_tensor invstds, invstds2; |
| 1964 | resizable_tensor running_means, running_means2; |
| 1965 | resizable_tensor running_variances, running_variances2; |
| 1966 | resizable_tensor src(2,8,10,9); |
| 1967 | resizable_tensor gamma(1,8); |
| 1968 | resizable_tensor beta(1,8); |
| 1969 | gamma = 2; |
| 1970 | beta = 3; |
| 1971 | tt::tensor_rand rnd; |
| 1972 | rnd.fill_uniform(src); |
| 1973 | |
| 1974 | cpu::batch_normalize_conv(DEFAULT_BATCH_NORM_EPS,dest,means,invstds,1,running_means,running_variances, src, gamma, beta); |
| 1975 | cuda::batch_normalize_conv(DEFAULT_BATCH_NORM_EPS,dest2,means2,invstds2,1,running_means2,running_variances2, src, gamma, beta); |
| 1976 | |
| 1977 | dlog << LINFO << "dest error: "<< max(abs(mat(dest) -mat(dest2))); |
| 1978 | dlog << LINFO << "means error: "<< max(abs(mat(means) -mat(means2))); |
| 1979 | dlog << LINFO << "invstds error: "<< max(abs(mat(invstds) -mat(invstds2))); |
| 1980 | dlog << LINFO << "running_means error: "<< max(abs(mat(running_means) -mat(running_means2))); |
| 1981 | dlog << LINFO << "running_variances error: "<< max(abs(mat(running_variances) -mat(running_variances2))); |
| 1982 | |
| 1983 | DLIB_TEST(max(abs(mat(dest) -mat(dest2))) < 1e-4); |
| 1984 | DLIB_TEST(max(abs(mat(means) -mat(means2))) < 1e-4); |
| 1985 | DLIB_TEST(max(abs(mat(invstds) -mat(invstds2))) < 1e-4); |
| 1986 | DLIB_TEST(max(abs(mat(running_means) -mat(running_means2))) < 1e-4); |
| 1987 | DLIB_TEST(max(abs(mat(running_variances) -mat(running_variances2))) < 1e-4); |
| 1988 | |
| 1989 | resizable_tensor gradient_input; |
| 1990 | resizable_tensor src_grad, gamma_grad, beta_grad; |
| 1991 | resizable_tensor src_grad2, gamma_grad2, beta_grad2; |
| 1992 | gradient_input.copy_size(dest); |
| 1993 | src_grad.copy_size(src); src_grad = 0; src_grad2 = src_grad; |
| 1994 | gamma_grad.copy_size(gamma); gamma_grad = 0; gamma_grad2 = gamma_grad; |
| 1995 | beta_grad.copy_size(beta); beta_grad = 0; beta_grad2 = beta_grad; |
| 1996 | rnd.fill_uniform(gradient_input); |
| 1997 | |
| 1998 | |
| 1999 | cpu::batch_normalize_conv_gradient(DEFAULT_BATCH_NORM_EPS,gradient_input, means, invstds, src, gamma, src_grad, gamma_grad, beta_grad); |
| 2000 | cuda::batch_normalize_conv_gradient(DEFAULT_BATCH_NORM_EPS,gradient_input, means, invstds, src, gamma, src_grad2, gamma_grad2, beta_grad2); |
| 2001 | |
| 2002 | dlog << LINFO << "src_grad error: " << max(abs(mat(src_grad)-mat(src_grad2))); |
| 2003 | dlog << LINFO << "gamma_grad error: " << max(abs(mat(gamma_grad)-mat(gamma_grad2))); |
| 2004 | dlog << LINFO << "beta_grad error: " << max(abs(mat(beta_grad)-mat(beta_grad2))); |
| 2005 | DLIB_TEST(max(abs(mat(src_grad)-mat(src_grad2))) < 1e-4); |
| 2006 | DLIB_TEST(max(abs(mat(gamma_grad)-mat(gamma_grad2))) < 1e-4); |
| 2007 | DLIB_TEST(max(abs(mat(beta_grad)-mat(beta_grad2))) < 1e-4); |
| 2008 | } |
| 2009 | |
| 2010 | |
| 2011 | void test_more_ops2() |
no test coverage detected