X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=ae_size.py;h=8afb101100b87429351aa4dc157f59973ec398c1;hb=4469498b31c1fb90cb2b1202dbaf86be0f2d18b0;hp=7bef9f507f8eb6ff15bbd81b40e0ad4ee2e2d927;hpb=2db4624955ad2a1c29f7632f30ac217c045638cf;p=pytorch.git diff --git a/ae_size.py b/ae_size.py index 7bef9f5..8afb101 100755 --- a/ae_size.py +++ b/ae_size.py @@ -11,27 +11,34 @@ def minimal_input_size(w, layer_specs): if layer_specs == []: return w else: - k, s = layer_specs[0] - w = math.ceil((w - k) / s) + 1 - w = minimal_input_size(w, layer_specs[1:]) - return int((w - 1) * s + k) + kernel_size, stride = layer_specs[0] + v = int(math.ceil((w - kernel_size) / stride)) + 1 + v = minimal_input_size(v, layer_specs[1:]) + return (v - 1) * stride + kernel_size ###################################################################### -layer_specs = [ (11, 5), (5, 2), (3, 2), (3, 2) ] +# Dummy test -layers = [] -for l in layer_specs: - layers.append(nn.Conv2d(1, 1, l[0], l[1])) +if __name__ == "__main__": -for l in reversed(layer_specs): - layers.append(nn.ConvTranspose2d(1, 1, l[0], l[1])) + layer_specs = [ (17, 5), (5, 4), (3, 2), (3, 2) ] -m = nn.Sequential(*layers) + layers = [] -h = minimal_input_size(240, layer_specs) -w = minimal_input_size(320, layer_specs) + for kernel_size, stride in layer_specs: + layers.append(nn.Conv2d(1, 1, kernel_size, stride)) -x = Tensor(1, 1, h, w).normal_() + for kernel_size, stride in reversed(layer_specs): + layers.append(nn.ConvTranspose2d(1, 1, kernel_size, stride)) -print(x.size(), m(x).size()) + m = nn.Sequential(*layers) + + h = minimal_input_size(240, layer_specs) + w = minimal_input_size(320, layer_specs) + + x = Tensor(1, 1, h, w).normal_() + + print(x.size(), m(x).size()) + +######################################################################