-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
reshape_transforms.py
34 lines (26 loc) · 1010 Bytes
/
reshape_transforms.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import torch
def fasterrcnn_reshape_transform(x):
target_size = x['pool'].size()[-2:]
activations = []
for key, value in x.items():
activations.append(
torch.nn.functional.interpolate(
torch.abs(value),
target_size,
mode='bilinear'))
activations = torch.cat(activations, axis=1)
return activations
def swinT_reshape_transform(tensor, height=7, width=7):
result = tensor.reshape(tensor.size(0),
height, width, tensor.size(2))
# Bring the channels to the first dimension,
# like in CNNs.
result = result.transpose(2, 3).transpose(1, 2)
return result
def vit_reshape_transform(tensor, height=14, width=14):
result = tensor[:, 1:, :].reshape(tensor.size(0),
height, width, tensor.size(2))
# Bring the channels to the first dimension,
# like in CNNs.
result = result.transpose(2, 3).transpose(1, 2)
return result