MCPcopy Create free account
hub / github.com/apache/singa / TEST

Function TEST

test/singa/test_operation_convolution.cc:36–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34#include <stdio.h>
35
36TEST(DNNLOperation_Convolution, Forward) {
37 const size_t batch_size = 2, c = 1, h = 3, w = 3;
38 const float x[batch_size * c * h * w] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
39 7.0f, 8.0f, 9.0f, 1.0f, 2.0f, 3.0f,
40 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
41 Tensor in(Shape{batch_size, c, h, w});
42 in.CopyDataFromHostPtr(x, batch_size * c * h * w);
43
44 const size_t num_filters = 1;
45 const size_t kernel_w = 3;
46 const size_t kernel_h = 3;
47 const std::vector<size_t> stride = {2, 2};
48 const std::vector<size_t> padding = {1, 1};
49 const bool bias_flag = true;
50
51 const float we[num_filters * kernel_w * kernel_h] = {
52 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f};
53 Tensor weight(Shape{num_filters, num_filters, 3, 3});
54 weight.CopyDataFromHostPtr(we,
55 num_filters * num_filters * kernel_w * kernel_h);
56
57 const float b[num_filters] = {1.0f};
58 Tensor bias(Shape{num_filters});
59 bias.CopyDataFromHostPtr(b, num_filters);
60
61 ConvHandle conv_handle(in, {kernel_w, kernel_h}, stride, padding, c,
62 num_filters, bias_flag);
63 Tensor out1 = CpuConvForward(in, weight, bias, conv_handle);
64
65 const float *out_ptr1 = out1.data<float>();
66 // Input: 3*3; kernel: 3*3; stride: 2*2; padding: 1*1.
67 EXPECT_EQ(8u, out1.Size());
68
69 EXPECT_EQ(3.0f, out_ptr1[0]);
70 EXPECT_EQ(7.0f, out_ptr1[1]);
71 EXPECT_EQ(-3.0f, out_ptr1[2]);
72 EXPECT_EQ(12.0f, out_ptr1[3]);
73 EXPECT_EQ(3.0f, out_ptr1[4]);
74 EXPECT_EQ(7.0f, out_ptr1[5]);
75 EXPECT_EQ(-3.0f, out_ptr1[6]);
76 EXPECT_EQ(12.0f, out_ptr1[7]);
77}
78
79TEST(DNNLOperation_Convolution, Performance) {
80 const int batch = 64;

Callers

nothing calls this directly

Calls 7

CpuConvForwardFunction · 0.85
CpuConvBackwardxFunction · 0.85
CpuConvBackwardWFunction · 0.85
CpuConvBackwardbFunction · 0.85
GaussianFunction · 0.50
CopyDataFromHostPtrMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected