From 2f6778c2db9ce1a887f04fdc85ad0d5db4ba84b8 Mon Sep 17 00:00:00 2001
From: natanielruiz <nruiz9@gatech.edu>
Date: 星期一, 30 十月 2017 06:15:30 +0800
Subject: [PATCH] Cleaned up a bit

---
 code/train_resnet50_regression.py |   55 ++++++++++++++-----------------------------------------
 1 files changed, 14 insertions(+), 41 deletions(-)

diff --git a/code/train_resnet50_regression.py b/code/train_resnet50_regression.py
index a67a6f2..04d27c7 100644
--- a/code/train_resnet50_regression.py
+++ b/code/train_resnet50_regression.py
@@ -1,4 +1,9 @@
+import sys, os, argparse, time
+
 import numpy as np
+import cv2
+import matplotlib.pyplot as plt
+
 import torch
 import torch.nn as nn
 from torch.autograd import Variable
@@ -8,25 +13,8 @@
 import torch.backends.cudnn as cudnn
 import torch.nn.functional as F
 
-import cv2
-import matplotlib.pyplot as plt
-import sys
-import os
-import argparse
-
-import datasets
-import hopenet
+import datasets, hopenet
 import torch.utils.model_zoo as model_zoo
-
-import time
-
-model_urls = {
-    'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth',
-    'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth',
-    'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth',
-    'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth',
-    'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',
-}
 
 def parse_args():
     """Parse input arguments."""
@@ -51,9 +39,7 @@
 
 def get_ignored_params(model):
     # Generator function that yields ignored params.
-    b = []
-    b.append(model.conv1)
-    b.append(model.bn1)
+    b = [model.conv1, model.bn1]
     for i in range(len(b)):
         for module_name, module in b[i].named_modules():
             if 'bn' in module_name:
@@ -63,11 +49,7 @@
 
 def get_non_ignored_params(model):
     # Generator function that yields params that will be optimized.
-    b = []
-    b.append(model.layer1)
-    b.append(model.layer2)
-    b.append(model.layer3)
-    b.append(model.layer4)
+    b = [model.layer1, model.layer2, model.layer3, model.layer4]
     for i in range(len(b)):
         for module_name, module in b[i].named_modules():
             if 'bn' in module_name:
@@ -76,8 +58,8 @@
                 yield param
 
 def get_fc_params(model):
-    b = []
-    b.append(model.fc_angles)
+    # Generator function that yields fc layer params.
+    b = [model.fc_angles]
     for i in range(len(b)):
         for module_name, module in b[i].named_modules():
             for name, param in module.named_parameters():
@@ -86,11 +68,8 @@
 def load_filtered_state_dict(model, snapshot):
     # By user apaszke from discuss.pytorch.org
     model_dict = model.state_dict()
-    # 1. filter out unnecessary keys
     snapshot = {k: v for k, v in snapshot.items() if k in model_dict}
-    # 2. overwrite entries in the existing state dict
     model_dict.update(snapshot)
-    # 3. load the new state dict
     model.load_state_dict(model_dict)
 
 if __name__ == '__main__':
@@ -106,8 +85,7 @@
 
     # ResNet50
     model = hopenet.ResNet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 3)
-
-    load_filtered_state_dict(model, model_zoo.load_url(model_urls['resnet50']))
+    load_filtered_state_dict(model, model_zoo.load_url('https://download.pytorch.org/models/resnet50-19c8e357.pth'))
 
     print 'Loading data.'
 
@@ -117,6 +95,8 @@
 
     if args.dataset == 'Pose_300W_LP':
         pose_dataset = datasets.Pose_300W_LP(args.data_dir, args.filename_list, transformations)
+    elif args.dataset == 'Pose_300W_LP_random_ds':
+        pose_dataset = datasets.Pose_300W_LP_random_ds(args.data_dir, args.filename_list, transformations)
     elif args.dataset == 'AFLW2000':
         pose_dataset = datasets.AFLW2000(args.data_dir, args.filename_list, transformations)
     elif args.dataset == 'BIWI':
@@ -150,23 +130,16 @@
             images = Variable(images).cuda(gpu)
 
             label_angles = Variable(cont_labels[:,:3]).cuda(gpu)
-
-            optimizer.zero_grad()
-            model.zero_grad()
-
             angles = model(images)
 
             loss = criterion(angles, label_angles)
-
+            optimizer.zero_grad()
             loss.backward()
             optimizer.step()
 
             if (i+1) % 100 == 0:
                 print ('Epoch [%d/%d], Iter [%d/%d] Loss: %.4f'
                        %(epoch+1, num_epochs, i+1, len(pose_dataset)//batch_size, loss.data[0]))
-                # if epoch == 0:
-                #     torch.save(model.state_dict(),
-                #     'output/snapshots/' + args.output_string + '_iter_'+ str(i+1) + '.pkl')
 
         # Save models at numbered epochs.
         if epoch % 1 == 0 and epoch < num_epochs:

--
Gitblit v1.8.0