@@ -24,15 +24,14 @@ prop_im2col_col2im_symmetrical_with_kernel_stride =
24 in property $ do
24 in property $ do
25 height <- forAll $ choose 2 100
25 height <- forAll $ choose 2 100
26 width <- forAll $ choose 2 100
26 width <- forAll $ choose 2 100
27− kernel_h <- forAll $ (height `div`) <$> Gen.element (factors height)
27+ kernel_h <- forAll $ (height `div`) <$> Gen.element (factors height)
28− kernel_w <- forAll $ (width `div`) <$> Gen.element (factors width)
28+ kernel_w <- forAll $ (width `div`) <$> Gen.element (factors width)
29− input <- forAll $ Gen.list (Range.singleton $ height * width) (Gen.realFloat $ Range.linearFracFrom 0 (-100) 100)
29+ input <- forAll $ (height >< width) <$> Gen.list (Range.singleton $ height * width) (Gen.realFloat $ Range.linearFracFrom 0 (-100) 100)
31− let input' = (height >< width) input
32 let stride_h = kernel_h
31 let stride_h = kernel_h
33 let stride_w = kernel_w
32 let stride_w = kernel_w
34− let out = col2im kernel_h kernel_w stride_h stride_w height width . im2col kernel_h kernel_w stride_h stride_w $ input'
33+ let out = col2im kernel_h kernel_w stride_h stride_w height width . im2col kernel_h kernel_w stride_h stride_w $ input
35− input' === out
34+ input === out
37prop_im2col_col2im_behaves_as_reference =
36prop_im2col_col2im_behaves_as_reference =
38 let ok extent kernel = [stride | stride <- [1..extent], (extent - kernel) `mod` stride == 0]
37 let ok extent kernel = [stride | stride <- [1..extent], (extent - kernel) `mod` stride == 0]
@@ -43,12 +42,12 @@ prop_im2col_col2im_behaves_as_reference =
43 kernel_w <- forAll (choose 2 (width - 1))
42 kernel_w <- forAll (choose 2 (width - 1))
44 stride_h <- forAll (Gen.element (ok height kernel_h))
43 stride_h <- forAll (Gen.element (ok height kernel_h))
45 stride_w <- forAll (Gen.element (ok width kernel_w))
44 stride_w <- forAll (Gen.element (ok width kernel_w))
46− input <- forAll ( Gen.list (Range.singleton $ height * width) (Gen.realFloat $ Range.linearFracFrom 0 (-100) 100))
45+ input <- forAll ((height >< width) <$> Gen.list (Range.singleton $ height * width) (Gen.realFloat $ Range.linearFracFrom 0 (-100) 100))
47− let input' = (height >< width) input
46+
48− let outFast = im2col kernel_h kernel_w stride_h stride_w input'
47+ let outFast = im2col kernel_h kernel_w stride_h stride_w input
49 let retFast = col2im kernel_h kernel_w stride_h stride_w height width outFast
48 let retFast = col2im kernel_h kernel_w stride_h stride_w height width outFast
51− let outReference = Reference.im2col kernel_h kernel_w stride_h stride_w input'
50+ let outReference = Reference.im2col kernel_h kernel_w stride_h stride_w input
52 let retReference = Reference.col2im kernel_h kernel_w stride_h stride_w height width outReference
51 let retReference = Reference.col2im kernel_h kernel_w stride_h stride_w height width outReference
54 outFast === outReference
53 outFast === outReference