broccoli-ml 1.1.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/PKG-INFO +1 -1
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/transformer.py +2 -1
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/vit.py +18 -8
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/pyproject.toml +1 -1
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/LICENSE +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/README.md +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/__init__.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/activation.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/assets/2025_resnet_imagenet_1k_pretrained_state_dict.pkl +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/assets/cifar100_eigenvectors_size_2.pt +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/assets/cifar100_eigenvectors_size_3.pt +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/cnn.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/eigenpatches.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/linear.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/rope.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/tensor.py +0 -0
- {broccoli_ml-1.1.0 → broccoli_ml-1.2.1}/broccoli/utils.py +0 -0
@@ -219,7 +219,8 @@ class MHAttention(nn.Module):
|
|
219
219
|
if self.scaling == "sqrtd":
|
220
220
|
qk_scores /= math.sqrt(self.head_dim)
|
221
221
|
elif self.scaling == "d":
|
222
|
-
|
222
|
+
# for backwards compatibility, per https://github.com/microsoft/mup
|
223
|
+
qk_scores *= 8 / self.head_dim
|
223
224
|
else:
|
224
225
|
raise ValueError('`scaling` argument to MHAttention must be "d" or "sqrtd"')
|
225
226
|
|
@@ -53,12 +53,20 @@ class ClassificationHead(nn.Module):
|
|
53
53
|
A general classification head for a ViT
|
54
54
|
"""
|
55
55
|
|
56
|
-
def __init__(
|
56
|
+
def __init__(
|
57
|
+
self,
|
58
|
+
d_model,
|
59
|
+
n_classes,
|
60
|
+
linear_module=nn.Linear,
|
61
|
+
logit_projection_layer=nn.Linear,
|
62
|
+
batch_norm_logits=True,
|
63
|
+
):
|
57
64
|
super().__init__()
|
58
65
|
self.d_model = d_model
|
59
66
|
self.summarize = GetCLSToken()
|
60
|
-
self.projection =
|
61
|
-
|
67
|
+
self.projection = logit_projection_layer(d_model, n_classes)
|
68
|
+
|
69
|
+
if batch_norm_logits:
|
62
70
|
self.batch_norm = nn.BatchNorm1d(n_classes, affine=False)
|
63
71
|
else:
|
64
72
|
self.batch_norm = nn.Identity()
|
@@ -83,7 +91,7 @@ class SequencePoolClassificationHead(ClassificationHead):
|
|
83
91
|
"""
|
84
92
|
|
85
93
|
def __init__(self, d_model, linear_module, out_dim, batch_norm=True):
|
86
|
-
super().__init__(d_model, linear_module, out_dim,
|
94
|
+
super().__init__(d_model, linear_module, out_dim, batch_norm_logits=batch_norm)
|
87
95
|
self.summarize = SequencePool(d_model, linear_module)
|
88
96
|
# Rebuild the classification process with the correct summary module:
|
89
97
|
self.classification_process = nn.Sequential(
|
@@ -411,9 +419,10 @@ class ViT(nn.Module):
|
|
411
419
|
transformer_mlp_dropout=0.0,
|
412
420
|
transformer_msa_dropout=0.1,
|
413
421
|
transformer_stochastic_depth=0.1,
|
414
|
-
batch_norm_outputs=True,
|
415
|
-
linear_module=SpectralNormLinear,
|
416
422
|
head=SequencePoolClassificationHead,
|
423
|
+
batch_norm_logits=True,
|
424
|
+
logit_projection_layer=nn.Linear,
|
425
|
+
linear_module=nn.Linear,
|
417
426
|
):
|
418
427
|
|
419
428
|
super().__init__()
|
@@ -480,9 +489,10 @@ class ViT(nn.Module):
|
|
480
489
|
|
481
490
|
self.pool = head(
|
482
491
|
transformer_embedding_size,
|
483
|
-
linear_module,
|
484
492
|
image_classes,
|
485
|
-
|
493
|
+
linear_module=linear_module,
|
494
|
+
logit_projection_layer=logit_projection_layer,
|
495
|
+
batch_norm=batch_norm_logits,
|
486
496
|
)
|
487
497
|
|
488
498
|
@property
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|