Skip to content

Commit e628872

Browse files
committed
updated examples to new get_activations api
1 parent 0d83c64 commit e628872

17 files changed

Lines changed: 76 additions & 191 deletions

docs/examples/ResNet Invariance with TinyImageNet.ipynb

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
{
3333
"cell_type": "code",
34-
"execution_count": 2,
34+
"execution_count": null,
3535
"metadata": {
3636
"colab": {
3737
"base_uri": "https://localhost:8080/",
@@ -46,14 +46,14 @@
4646
"\n",
4747
"%load_ext autoreload\n",
4848
"%autoreload 2\n",
49+
"from tempfile import TemporaryDirectory\n",
4950
"import torch \n",
5051
"\n",
5152
"from pathlib import Path\n",
52-
"\n",
53-
"\n",
5453
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
55-
"results_path = Path(\"~/tm_example_pytorch/\").expanduser()\n",
56-
"results_path.mkdir(parents=True, exist_ok=True)"
54+
"results_path = Path(TemporaryDirectory().name)/\"tm_example_pytorch\"\n",
55+
"results_path.mkdir(parents=True, exist_ok=True)\n",
56+
"print(f\"Saving results to {results_path}\")"
5757
]
5858
},
5959
{
@@ -279,7 +279,7 @@
279279
},
280280
{
281281
"cell_type": "code",
282-
"execution_count": 6,
282+
"execution_count": null,
283283
"metadata": {},
284284
"outputs": [
285285
{
@@ -313,11 +313,14 @@
313313
"# print(model)\n",
314314
"\n",
315315
"# Create an ActivationsModule from the vanilla model\n",
316-
"activations_module = tm.pytorch.AutoActivationsModule(normalized_model)\n",
317-
"print(activations_module.activation_names())\n",
318-
"def filter(module, name): return True #name.endswith(\"conv2\")\n",
319316
"\n",
320-
"activations_module = tm.pytorch.model.FilteredActivationsModule(activations_module,filter)\n",
317+
"activations = tm.pytorch.get_activations(model)\n",
318+
"def filter_stochastic(a):\n",
319+
" return not str(a).startswith(\"StochasticDepth\")\n",
320+
"activations = {k:v for k,v in activations.items() if filter_stochastic(k)}\n",
321+
"\n",
322+
"activations_module = tm.pytorch.ActivationsModule(model,activations)\n",
323+
"\n",
321324
"print(activations_module.activation_names())"
322325
]
323326
},
@@ -336,7 +339,7 @@
336339
},
337340
{
338341
"cell_type": "code",
339-
"execution_count": 29,
342+
"execution_count": null,
340343
"metadata": {},
341344
"outputs": [
342345
{
@@ -357,7 +360,7 @@
357360
" measure_result = pickle.load(f)\n",
358361
" print(f\"loaded measure results from {filepath}\", measure_result) \n",
359362
"else:\n",
360-
" options = tm.pytorch.PyTorchMeasureOptions(batch_size=128, num_workers=0,model_device=device,measure_device=device,data_device=\"cpu\")\n",
363+
" options = tm.pytorch.PyTorchMeasureOptions(batch_size=128, num_workers=0,model_device=device,measure_device=device,data_device=torch.device(\"cpu\"))\n",
361364
"\n",
362365
" # Define the measure and evaluate it\n",
363366
" measure = tm.pytorch.NormalizedVarianceInvariance()\n",
@@ -425,7 +428,7 @@
425428
},
426429
{
427430
"cell_type": "code",
428-
"execution_count": 15,
431+
"execution_count": null,
429432
"metadata": {},
430433
"outputs": [
431434
{
@@ -453,9 +456,8 @@
453456
"from tmeasures.visualization.weights import reorder_conv2d_weights,plot_conv2d_filters,plot_conv2d_filters_rgb\n",
454457
"\n",
455458
"activation_name = \"/ResNet_1/layer3/BasicBlock_1/conv2\"\n",
456-
"#\"/ResNet_1/layer1/BasicBlock_0/conv2\"\n",
457-
"activation_index = activations_module.inner_model.names.index(activation_name)\n",
458-
"activation = activations_module.inner_model.activations[activation_index]\n",
459+
"\n",
460+
"activation = activations[activation_name]\n",
459461
"invariance = measure_result.layers_dict()[activation_name]\n",
460462
"# print(activation)\n",
461463
"# print(invariance.shape)\n",
@@ -563,7 +565,7 @@
563565
"provenance": []
564566
},
565567
"kernelspec": {
566-
"display_name": "tm",
568+
"display_name": ".venv",
567569
"language": "python",
568570
"name": "python3"
569571
},

docs/examples/Variance to rotations of a CNN trained on MNIST with PyTorch.ipynb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@
3535
"from pathlib import Path\n",
3636
"\n",
3737
"torch.manual_seed(0)\n",
38+
"from tempfile import TemporaryDirectory\n",
39+
"\n",
3840
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
39-
"results_path = Path(\"~/.tmeasures/\").expanduser()\n",
40-
"results_path.mkdir(parents=True, exist_ok=True)"
41+
"results_path = Path(TemporaryDirectory().name)/\"tm_example_pytorch\"\n",
42+
"results_path.mkdir(parents=True, exist_ok=True)\n",
43+
"print(f\"Saving results to {results_path}\")"
4144
]
4245
},
4346
{

docs/examples/basic_example_pytorch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import matplotlib.pyplot as plt
1212
from torch import nn
1313

14-
from tmeasures.pytorch.model import AutoActivationsModule, ManualActivationsModule
14+
from tmeasures.pytorch.model import AutoActivationsModule, ActivationsModule
1515

1616
class Flatten(nn.Module):
1717
def forward(self, input: torch.Tensor):
@@ -132,7 +132,7 @@ def __getitem__(self, index):
132132

133133
print("Activations in model:")
134134
print(activations.keys())
135-
filtered_model = ManualActivationsModule(model,activations)
135+
filtered_model = ActivationsModule(model,activations)
136136
activations_module = AutoActivationsModule(model)
137137

138138
average_fm=tm.pytorch.AverageFeatureMaps()

docs/examples/brighntness_invariance_efficientnet_pretrained.py

Lines changed: 0 additions & 132 deletions
This file was deleted.

docs/examples/brightness_invariance_efficientnet_pretrained.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
# %pip install tinyimagenet
99
# %pip install scikit-learn
1010

11-
# %load_ext autoreload
12-
# %autoreload 2
11+
from tempfile import TemporaryDirectory
1312
import torch
1413

1514
from pathlib import Path
1615

17-
results_path = Path("~/tm_example_pytorch/").expanduser()
16+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
17+
results_path = Path(TemporaryDirectory().name)/"tm_example_pytorch"
1818
results_path.mkdir(parents=True, exist_ok=True)
19+
print(f"Saving results to {results_path}")
1920

2021
from torchvision import models
2122

@@ -86,7 +87,9 @@ def __getitem__(self, index):
8687
def filter_stochastic(a):
8788
return not str(a).startswith("StochasticDepth")
8889

89-
activations_module = tm.pytorch.AutoActivationsModule(model,filter=filter_stochastic)
90+
activations = tm.pytorch.get_activations(model)
91+
activations = {k:v for k,v in activations.items() if filter_stochastic(k)}
92+
activations_module = tm.pytorch.ActivationsModule(model,activations)
9093

9194
# a.training=False
9295
"""# Computing the measure

docs/examples/brightness_transformation.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#%%
2+
from tempfile import TemporaryDirectory
23
import numpy as np
34
import matplotlib.pyplot as plt
45

@@ -20,8 +21,9 @@
2021
import torchvision
2122
#%%
2223
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
23-
results_path = Path("~/tm_example_pytorch/").expanduser()
24+
results_path = Path(TemporaryDirectory().name)/"tm_example_pytorch"
2425
results_path.mkdir(parents=True, exist_ok=True)
26+
print(f"Saving results to {results_path}")
2527
# %%
2628

2729
model = models.efficientnet_b0(weights=models.EfficientNet_B0_Weights.IMAGENET1K_V1)
@@ -97,11 +99,13 @@ def filter_stochastic(a):
9799
return True
98100
else:
99101
return False
100-
def filter_vit(a):
101-
return str(a).startswith("GELU")
102-
#and (not str(a).startswith("NonDynamicallyQuantizableLinear"))
103102

104-
activations_module = tm.pytorch.AutoActivationsModule(model,filter=filter_stochastic)
103+
activations = tm.pytorch.get_activations(model)
104+
activations = {k:v for k,v in activations.items() if filter_stochastic(k)}
105+
activations_module = tm.pytorch.ActivationsModule(model,activations)
106+
107+
108+
105109

106110
#%%
107111
# Define options for computing the measure

docs/examples/resnet_pretrained_rotation_invariance.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
# # Define a CNN model that implements ObservableLayersModule
88
import os
9+
from tempfile import TemporaryDirectory
910
import tmeasures as tm
1011
import torch
1112
from torchvision import transforms,datasets, models
@@ -15,7 +16,9 @@
1516
if __name__ == '__main__':
1617
torch.manual_seed(0)
1718
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
18-
data_path = Path("~/tm_example_pretrained/").expanduser()
19+
data_path = Path(TemporaryDirectory().name)/"tm_example_pytorch"
20+
data_path.mkdir(parents=True, exist_ok=True)
21+
print(f"Saving results to {data_path}")
1922

2023
# MODEL
2124

@@ -57,7 +60,9 @@ def __getitem__(self, index):
5760

5861
# evaluate measure
5962
model.eval()
60-
activations_module = tm.pytorch.AutoActivationsModule(model)
63+
64+
activations = tm.pytorch.get_activations(model)
65+
activations_module = tm.pytorch.ActivationsModule(model,activations)
6166

6267
print("Activations in model:")
6368
print(activations_module.activation_names())

tmeasures/pytorch/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* :class:`.NormalizedVarianceSameEquivariance`
2222
"""
2323

24-
from .model import ActivationsModule,AutoActivationsModule,get_activations,ManualActivationsModule
24+
from .model import BaseActivationsModule,AutoActivationsModule,get_activations,ActivationsModule
2525
from .base import PyTorchMeasure,PyTorchMeasureOptions,ActivationsByLayer,PyTorchMeasureResult,STMatrixIterator,PyTorchActivationMeasure
2626
from .transformations import PyTorchTransformationSet,PyTorchTransformation
2727

tmeasures/pytorch/activations_iterator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
# from .activations_transformer import ActivationsTransformer
1212
from .. import InvertibleTransformation, Transformation
13-
from . import ActivationsModule
13+
from . import BaseActivationsModule
1414
from .base import PyTorchActivationMeasure, PyTorchMeasure, PyTorchMeasureOptions
1515
from .computation_model import ThreadsComputationModel
1616
from .dataset2d import Dataset2D, STDataset
@@ -48,7 +48,7 @@ def transform(self, activations: torch.Tensor, x: torch.Tensor, transformations:
4848
class PytorchActivationsIterator:
4949

5050

51-
def __init__(self, model: ActivationsModule, dataset: Dataset2D, o: PyTorchMeasureOptions,
51+
def __init__(self, model: BaseActivationsModule, dataset: Dataset2D, o: PyTorchMeasureOptions,
5252
activations_transformer: ActivationsTransformer = IdentityActivationsTransformer()):
5353
"""
5454
Constructor for PytorchActivationsIterator.

0 commit comments

Comments
 (0)