Example #1
0
    def test_assertion_error_with_too_large_kernel(self):
        n = 1
        c_i = 1
        h_i = 3
        w_i = 3
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 1
        h_k = 4  # > h_i
        w_k = 4  # > w_i
        W = np.full(c_o * c_i * h_k * w_k, 2).reshape(c_o, c_i, h_k,
                                                      w_k).astype(np.float32)

        with pytest.raises(AssertionError):
            convolution_with_numpy(x, W)
Example #2
0
    def test_assertion_error_with_too_large_stride(self):
        n = 1
        c_i = 1
        h_i = 3
        w_i = 3
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 1
        h_k = 2
        w_k = 2
        W = np.full(c_o * c_i * h_k * w_k, 2).reshape(c_o, c_i, h_k,
                                                      w_k).astype(np.float32)

        pad = 1
        stride = 5  # > h_i - h_k + 2 * pad + 1

        with pytest.raises(AssertionError):
            convolution_with_numpy(x, W, stride=stride, pad=pad)
Example #3
0
    def test_basis(self):
        n = 1
        c_i = 1
        h_i = 3
        w_i = 3
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 1
        h_k = 2
        w_k = 2
        W = np.full(c_o * c_i * h_k * w_k, 2).reshape(c_o, c_i, h_k,
                                                      w_k).astype(np.float32)

        expected = convolution_2d(x, W).data
        actual = convolution_with_numpy(x, W)

        assert_array_equal(expected, actual)
Example #4
0
    def test_with_stride_4(self):
        n = 1
        c_i = 1
        h_i = 10
        w_i = 10
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 1
        h_k = 2
        w_k = 2
        W = np.full(c_o * c_i * h_k * w_k, 2).reshape(c_o, c_i, h_k,
                                                      w_k).astype(np.float32)

        stride = 4
        pad = 0

        expected = convolution_2d(x, W, stride=stride, pad=pad).data
        actual = convolution_with_numpy(x, W, stride=stride, pad=pad)

        assert_array_equal(expected, actual)
Example #5
0
    def test_with_c_o_3_c_i_3_n_3_stride_3_and_padding_5(self):
        n = 3
        c_i = 3
        h_i = 10
        w_i = 10
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 3
        h_k = 2
        w_k = 2
        W = np.full(c_o * c_i * h_k * w_k, 2).reshape(c_o, c_i, h_k,
                                                      w_k).astype(np.float32)

        stride = 3
        pad = 5

        expected = convolution_2d(x, W, stride=stride, pad=pad).data
        actual = convolution_with_numpy(x, W, stride=stride, pad=pad)

        assert_array_equal(expected, actual)