@@ -1235,7 +1235,8 @@ def same_padding_deconvolution(input, weight, strides, dilations):
1235
1235
input_cols = input .size (3 )
1236
1236
1237
1237
out_rows = input_rows * strides [0 ] - strides [0 ] + 1
1238
- out_cols = input_rows * strides [1 ] - strides [1 ] + 1
1238
+ out_cols = input_cols * strides [1 ] - strides [1 ] + 1
1239
+
1239
1240
1240
1241
padding_rows = max (0 , (input_rows - 1 ) * strides [0 ] + (filter_rows - 1 ) * dilations [0 ] + 1 - out_rows )
1241
1242
padding_cols = max (0 , (input_cols - 1 ) * strides [1 ] + (filter_cols - 1 ) * dilations [1 ] + 1 - out_cols )
@@ -1250,8 +1251,8 @@ def same_padding_deconvolution(input, weight, strides, dilations):
1250
1251
input_depth = input .size (4 )
1251
1252
1252
1253
out_rows = input_rows * strides [0 ] - strides [0 ] + 1
1253
- out_cols = input_rows * strides [1 ] - strides [1 ] + 1
1254
- out_depth = input_rows * strides [2 ] - strides [2 ] + 1
1254
+ out_cols = input_cols * strides [1 ] - strides [1 ] + 1
1255
+ out_depth = input_depth * strides [2 ] - strides [2 ] + 1
1255
1256
1256
1257
padding_rows = max (0 , (input_rows - 1 ) * strides [0 ] + (filter_rows - 1 ) * dilations [0 ] + 1 - out_rows )
1257
1258
padding_cols = max (0 , (input_cols - 1 ) * strides [1 ] + (filter_cols - 1 ) * dilations [1 ] + 1 - out_cols )
@@ -1410,7 +1411,7 @@ def __call__(self, input, filters, output_size):
1410
1411
if self .data_format == 'NHWC' :
1411
1412
input = nhwc_to_nchw (input )
1412
1413
if self .padding == 'same' :
1413
- out = self .conv2d_transpore_same (input , filters , output_size )
1414
+ out = self .conv2d_transpore_same (input , filters )
1414
1415
else :
1415
1416
out_padding = self ._output_padding (input , output_size , self .strides , (0 if isinstance (self .padding , str ) else self .padding ),
1416
1417
filters .shape ,
@@ -1428,15 +1429,13 @@ def __call__(self, input, filters, output_size):
1428
1429
out = nchw_to_nhwc (out )
1429
1430
return out
1430
1431
1431
- def conv2d_transpore_same (self ,input , filters , output_size ):
1432
+ def conv2d_transpore_same (self ,input , filters ):
1432
1433
rows_odd , cols_odd , padding_rows , padding_cols = same_padding_deconvolution (input , filters , self .strides , (1 , 1 ))
1433
1434
if rows_odd or cols_odd :
1434
1435
input = F .pad (input , [0 , int (rows_odd ), 0 , int (cols_odd )])
1435
1436
out_padding = 0
1436
1437
else :
1437
1438
out_padding = 1
1438
- out_padding = self ._output_padding (input , output_size , self .strides , (padding_rows // 2 , padding_cols // 2 ), filters .shape ,
1439
- 2 , self .dilations )
1440
1439
out = F .conv_transpose2d (input , weight = filters , padding = (padding_rows // 2 , padding_cols // 2 ), stride = self .strides ,
1441
1440
dilation = self .dilations , output_padding = out_padding , groups = self .groups )
1442
1441
return out
0 commit comments