コード例 #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_im2col(x.tolist(), W.tolist())
コード例 #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_im2col(x.tolist(),
                                    W.tolist(),
                                    stride=stride,
                                    pad=pad)
コード例 #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)

        stride = 1
        pad = 0

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

        self.__assert_eq_arrays(actual, expected, n, c_o, h_i, w_i, h_k, w_k,
                                pad, stride)
コード例 #4
0
    def test_with_c_o_64_c_i_3_n_1_stride_1_and_padding_1(self):
        n = 1
        c_i = 3
        h_i = 224
        w_i = 224
        x = np.arange(n * c_i * h_i * w_i).reshape(n, c_i, h_i,
                                                   w_i).astype(np.float32)
        c_o = 64
        h_k = 3
        w_k = 3
        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 = 1
        pad = 1

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

        self.__assert_eq_arrays(actual, expected, n, c_o, h_i, w_i, h_k, w_k,
                                pad, stride)
コード例 #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.tolist()
        actual = convolution_with_im2col(x.tolist(),
                                         W.tolist(),
                                         stride=stride,
                                         pad=pad)

        self.__assert_eq_arrays(actual, expected, n, c_o, h_i, w_i, h_k, w_k,
                                pad, stride)