Skip to content
Open
2 changes: 2 additions & 0 deletions examples/models/image_classification/PyPandaDenseNet.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,11 @@ def _create_model(self, scratch: bool, num_classes: int):
@staticmethod
def get_knob_config():
return {
'model_class':CategoricalKnob(['densenet']),
# Learning parameters
'lr': FixedKnob(0.0001), ### learning_rate
'weight_decay': FixedKnob(0.0),
'momentum':FixedKnob(0),
'drop_rate': FixedKnob(0.0),
'max_epochs': FixedKnob(10),
'batch_size': CategoricalKnob([32]),
Expand Down
1 change: 1 addition & 0 deletions examples/models/image_classification/PyPandaInception.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,7 @@ def get_knob_config():
# Learning parameters
'lr':FixedKnob(0.0001), ### learning_rate
'weight_decay':FixedKnob(0.0),
'momentum':FixedKnob(0),
'drop_rate':FixedKnob(0.0),
'max_epochs': FixedKnob(30),
'batch_size': CategoricalKnob([200]),
Expand Down
3 changes: 2 additions & 1 deletion examples/models/image_classification/PyPandaResNet.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ def _create_model(self, scratch: bool, num_classes: int):
@staticmethod
def get_knob_config():
return {
'model_class':CategoricalKnob(['resnent101_mnist']),
'model_class':CategoricalKnob(['resnet101_mnist']),
# Learning parameters
'lr':FixedKnob(0.0001), ### learning_rate
'weight_decay':FixedKnob(0.0),
'momentum':FixedKnob(0),
'drop_rate':FixedKnob(0.0),
'max_epochs': FixedKnob(30),
'batch_size': CategoricalKnob([200]),
Expand Down
2 changes: 2 additions & 0 deletions examples/models/image_classification/PyPandaVgg.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ def _create_model(self, scratch: bool, num_classes: int):
@staticmethod
def get_knob_config():
return {
'model_class':CategoricalKnob(['vgg']),
# Learning parameters
'lr': FixedKnob(0.0001), ### learning_rate
'weight_decay': FixedKnob(0.0),
'momentum':FixedKnob(0),
'drop_rate': FixedKnob(0.0),
'max_epochs': FixedKnob(1),
'batch_size': CategoricalKnob([256]),
Expand Down
17 changes: 13 additions & 4 deletions examples/models/image_classification/PyPandaVgg_SelectiveNet.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ def train(self,
self._gm_optimizer.gm_register(
name,
f.data.cpu().numpy(),
model_name="PyVGG",
model_name=self._knobs.get("model_class"),
hyperpara_list=[
self._knobs.get("gm_prior_regularization_a"),
self._knobs.get("gm_prior_regularization_b"),
Expand All @@ -235,7 +235,7 @@ def train(self,
self._spl = SPL()

train_dataset = TorchImageDataset(sa_dataset=dataset,
image_scale_size=128,
image_scale_size=self._image_size,
norm_mean=self._normalize_mean,
norm_std=self._normalize_std,
is_train=True)
Expand Down Expand Up @@ -266,7 +266,14 @@ def train(self,
optimizer = optim.RMSprop(
filter(lambda p: p.requires_grad, self._model.parameters()),
lr=self._knobs.get("lr"),
weight_decay=self._knobs.get("weight_decay"))
weight_decay=self._knobs.get("weight_decay"),
momentum=self._knobs.get("momentum"))
elif self._knobs.get("optimizer") == "sgd":
optimizer = optim.SGD(
filter(lambda p: p.requires_grad, self._model.parameters()),
lr=self._knobs.get("lr"),
weight_decay=self._knobs.get("weight_decay"),
momentum=self._knobs.get("momentum"))
else:
raise NotImplementedError()

Expand Down Expand Up @@ -382,7 +389,7 @@ def evaluate(self, dataset_path):
lazy_load=True)

torch_dataset = TorchImageDataset(sa_dataset=dataset,
image_scale_size=128,
image_scale_size=self._image_size,
norm_mean=self._normalize_mean,
norm_std=self._normalize_std,
is_train=False)
Expand Down Expand Up @@ -528,9 +535,11 @@ def _create_model(self, scratch: bool, num_classes: int):
@staticmethod
def get_knob_config():
return {
'model_class':CategoricalKnob(['vgg_selectivenet']),
# Learning parameters
'lr': FixedKnob(0.0001),
'weight_decay': FixedKnob(0.0),
'momentum':FixedKnob(0),
'drop_rate': FixedKnob(0.0),
'max_epochs': FixedKnob(10), # original 5
'batch_size': CategoricalKnob([96]), # original 32
Expand Down
20 changes: 16 additions & 4 deletions singa_easy/models/TorchModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def train(self,
self._gm_optimizer.gm_register(
name,
f.data.cpu().numpy(),
model_name="PyVGG",
model_name=self._knobs.get("model_class"),
hyperpara_list=[
self._knobs.get("gm_prior_regularization_a"),
self._knobs.get("gm_prior_regularization_b"),
Expand Down Expand Up @@ -292,12 +292,14 @@ def train(self,
optimizer = optim.RMSprop(
filter(lambda p: p.requires_grad, self._model.parameters()),
lr=self._knobs.get("lr"),
weight_decay=self._knobs.get("weight_decay"))
weight_decay=self._knobs.get("weight_decay"),
momentum=self._knobs.get("momentum"))
elif self._knobs.get("optimizer") == "sgd":
optimizer = optim.SGD(
filter(lambda p: p.requires_grad, self._model.parameters()),
lr=self._knobs.get("lr"),
weight_decay=self._knobs.get("weight_decay"))
weight_decay=self._knobs.get("weight_decay"),
momentum=self._knobs.get("momentum"))
else:
raise NotImplementedError()

Expand Down Expand Up @@ -548,9 +550,19 @@ def local_explain(self, org_imgs: Image,
traceback.print_exc(file=sys.stdout)

if enable_gradcam:
if 'densenet' in self._knobs.get("model_class"):
model_arch = 'densenet'
elif 'alexnet' in self._knobs.get("model_class"):
model_arch = 'alexnet'
elif 'resnet' in self._knobs.get("model_class"):
model_arch = 'resnet'
elif 'vgg' in self._knobs.get("model_class"):
model_arch = 'vgg'
else:
raise NameError()
try:
gc = GradCam(model=self._model,
model_arch='vgg',
model_arch=model_arch,
target_layer=None,
device=self.device)
(images, _, _) = utils.dataset.normalize_images(
Expand Down