예제 #1
0
def get_concrete_padding(auto_padding, custom_padding, upscaled_shape,
                         filter_shape, stride, dilation):
    if auto_padding in [None, '', 'NOTSET']:
        if custom_padding is None:
            return [(0, 0)] * len(upscaled_shape)
        return to_nnef_padding(custom_padding)
    else:
        assert custom_padding is None
        if auto_padding == 'SAME_UPPER':
            return infer.same_padding(upscaled_input=upscaled_shape,
                                      filter=filter_shape,
                                      stride=stride,
                                      dilation=dilation,
                                      left_bigger=False)
        elif auto_padding == 'SAME_LOWER':
            return infer.same_padding(upscaled_input=upscaled_shape,
                                      filter=filter_shape,
                                      stride=stride,
                                      dilation=dilation,
                                      left_bigger=True)
        elif auto_padding == 'VALID':
            return infer.valid_padding(rank=len(upscaled_shape))
        else:
            assert False, "Unexpected padding type: {}".format(auto_padding)
예제 #2
0
 def test_valid_padding(self):
     self.assertEqual([], infer.valid_padding(0))
     self.assertEqual([(0, 0)], infer.valid_padding(1))
     self.assertEqual([(0, 0), (0, 0), (0, 0), (0, 0)], infer.valid_padding(4))