summaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorJordan Gong <jordan.gong@protonmail.com>2021-02-14 16:46:56 +0800
committerJordan Gong <jordan.gong@protonmail.com>2021-02-14 16:46:56 +0800
commit929c48093c9f49a515420eb28d2678e48756b300 (patch)
tree9ec187d721c97a588f0207efe1311ceeee827d96 /models
parentec7d85a066592bfbed2f6c4c56f9f0b6269897e3 (diff)
Prepare for DataParallel
Diffstat (limited to 'models')
-rw-r--r--models/model.py2
-rw-r--r--models/rgb_part_net.py12
2 files changed, 11 insertions, 3 deletions
diff --git a/models/model.py b/models/model.py
index 9cb6a8e..f79b832 100644
--- a/models/model.py
+++ b/models/model.py
@@ -193,6 +193,8 @@ class Model:
x_c1 = batch_c1['clip'].to(self.device)
x_c2 = batch_c2['clip'].to(self.device)
y = batch_c1['label'].to(self.device)
+ # Duplicate labels for each part
+ y = y.unsqueeze(1).repeat(1, self.rgb_pn.num_total_parts)
losses, images = self.rgb_pn(x_c1, x_c2, y)
loss = losses.sum()
loss.backward()
diff --git a/models/rgb_part_net.py b/models/rgb_part_net.py
index 8ebcfd3..2aa680c 100644
--- a/models/rgb_part_net.py
+++ b/models/rgb_part_net.py
@@ -44,7 +44,8 @@ class RGBPartNet(nn.Module):
ae_feature_channels * 2, out_channels, hpm_use_1x1conv,
hpm_scales, hpm_use_avg_pool, hpm_use_max_pool
)
- empty_fc = torch.empty(self.hpm_num_parts + tfa_num_parts,
+ self.num_total_parts = self.hpm_num_parts + tfa_num_parts
+ empty_fc = torch.empty(self.num_total_parts,
out_channels, embedding_dims)
self.fc_mat = nn.Parameter(empty_fc)
@@ -75,8 +76,13 @@ class RGBPartNet(nn.Module):
x = self.fc(x)
if self.training:
- hpm_ba_trip = self.hpm_ba_trip(x[:self.hpm_num_parts], y)
- pn_ba_trip = self.pn_ba_trip(x[self.hpm_num_parts:], y)
+ y = y.T
+ hpm_ba_trip = self.hpm_ba_trip(
+ x[:self.hpm_num_parts], y[:self.hpm_num_parts]
+ )
+ pn_ba_trip = self.pn_ba_trip(
+ x[self.hpm_num_parts:], y[self.hpm_num_parts:]
+ )
losses = torch.stack((*losses, hpm_ba_trip, pn_ba_trip))
return losses, images
else: