braindecode 1.5.0.dev984__tar.gz → 1.5.0.dev182195895__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.
- {braindecode-1.5.0.dev984/braindecode.egg-info → braindecode-1.5.0.dev182195895}/PKG-INFO +1 -1
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/biot.py +1 -1
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/attention.py +45 -16
- braindecode-1.5.0.dev182195895/braindecode/version.py +1 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895/braindecode.egg-info}/PKG-INFO +1 -1
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/whats_new.rst +13 -1
- braindecode-1.5.0.dev984/braindecode/version.py +0 -1
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/LICENSE.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/MANIFEST.in +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/NOTICE.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/README.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/base.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/functional.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/transforms.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/classifier.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/base.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bbci.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bcicomp.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/datasets.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/format.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub_format.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub_io.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub_validation.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/iterable.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/chb_mit.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/mne.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/moabb.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/nmt.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/registry.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/siena.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/sleep_physionet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/tuh.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/utils.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/xy.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/channel_utils.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/hub_formats.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/serialization.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/util.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/eegneuralnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/functions.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/initialization.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/atcnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/attentionbasenet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/attn_sleep.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/base.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/bendr.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/brainmodule.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/cbramod.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/config.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/contrawr.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/ctnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/deep4.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/deepsleepnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/dgcnn.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegconformer.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eeginception_erp.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eeginception_mi.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegitnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegminer.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegnex.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegpt.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegsimpleconv.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegsym.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegtcnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/fbcnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/fblightconvnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/fbmsnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/hybrid.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/ifnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/labram.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/luna.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/medformer.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/msvtnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/patchedtransformer.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/reve.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sccnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/shallow_fbcsp.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/signal_jepa.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sinc_shallow.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sparcnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sstdpn.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/summary.csv +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/syncnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/tcn.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/tidnet.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/tsinception.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/usleep.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/util.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/activation.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/blocks.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/convolution.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/filter.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/layers.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/linear.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/parametrization.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/stats.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/util.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/wrapper.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/mne_preprocess.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/preprocess.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/util.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/windowers.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/regressor.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/samplers/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/samplers/base.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/samplers/ssl.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/callbacks.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/losses.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/scoring.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/util.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/visualization/__init__.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/visualization/confusion_matrices.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/visualization/gradients.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/SOURCES.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/dependency_links.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/requires.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/top_level.txt +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/Makefile +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/class.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/function.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/api.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/cite.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/conf.py +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/help.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/index.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/install/install.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/install/install_pip.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/install/install_source.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/attention.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/channel.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/convolution.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/filterbank.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/gnn.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/interpretable.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/lbm.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/recurrent.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/spd.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models_categorization.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models_table.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models_visualization.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/sg_execution_times.rst +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/pyproject.toml +0 -0
- {braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev182195895
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Alexandre Gramfort <agramfort@meta.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -439,7 +439,7 @@ class _BIOTEncoder(nn.Module):
|
|
|
439
439
|
self.channel_tokens = nn.Embedding(
|
|
440
440
|
num_embeddings=n_chans, embedding_dim=emb_size
|
|
441
441
|
)
|
|
442
|
-
self.index
|
|
442
|
+
self.register_buffer("index", torch.arange(n_chans, dtype=torch.long))
|
|
443
443
|
|
|
444
444
|
def stft(self, sample):
|
|
445
445
|
"""
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/attention.py
RENAMED
|
@@ -837,6 +837,18 @@ class CATLite(nn.Module):
|
|
|
837
837
|
class MultiHeadAttention(nn.Module):
|
|
838
838
|
"""Multi-head self-attention block.
|
|
839
839
|
|
|
840
|
+
Uses ``F.scaled_dot_product_attention`` for optimized attention
|
|
841
|
+
kernels (flash-attention on CUDA, memory-efficient on other devices).
|
|
842
|
+
|
|
843
|
+
Parameters
|
|
844
|
+
----------
|
|
845
|
+
emb_size : int
|
|
846
|
+
The embedding dimension.
|
|
847
|
+
num_heads : int
|
|
848
|
+
Number of attention heads. Must evenly divide ``emb_size``.
|
|
849
|
+
dropout : float, optional
|
|
850
|
+
Dropout probability applied to attention weights. Default: 0.0.
|
|
851
|
+
|
|
840
852
|
Examples
|
|
841
853
|
--------
|
|
842
854
|
>>> import torch
|
|
@@ -848,40 +860,57 @@ class MultiHeadAttention(nn.Module):
|
|
|
848
860
|
torch.Size([2, 10, 32])
|
|
849
861
|
"""
|
|
850
862
|
|
|
851
|
-
def __init__(self, emb_size, num_heads, dropout):
|
|
863
|
+
def __init__(self, emb_size, num_heads, dropout=0.0):
|
|
852
864
|
super().__init__()
|
|
865
|
+
if emb_size % num_heads != 0:
|
|
866
|
+
raise ValueError(
|
|
867
|
+
f"emb_size ({emb_size}) must be divisible by num_heads ({num_heads})."
|
|
868
|
+
)
|
|
853
869
|
self.emb_size = emb_size
|
|
854
870
|
self.num_heads = num_heads
|
|
871
|
+
self.head_dim = emb_size // num_heads
|
|
855
872
|
self.keys = nn.Linear(emb_size, emb_size)
|
|
856
873
|
self.queries = nn.Linear(emb_size, emb_size)
|
|
857
874
|
self.values = nn.Linear(emb_size, emb_size)
|
|
858
|
-
self.att_drop =
|
|
875
|
+
self.att_drop = dropout
|
|
859
876
|
self.projection = nn.Linear(emb_size, emb_size)
|
|
860
877
|
|
|
861
878
|
self.rearrange_stack = Rearrange(
|
|
862
|
-
"
|
|
863
|
-
|
|
879
|
+
"batch seq (heads head_dim) -> batch heads seq head_dim",
|
|
880
|
+
heads=num_heads,
|
|
864
881
|
)
|
|
865
882
|
self.rearrange_unstack = Rearrange(
|
|
866
|
-
"
|
|
883
|
+
"batch heads seq head_dim -> batch seq (heads head_dim)",
|
|
867
884
|
)
|
|
868
885
|
|
|
869
886
|
def forward(self, x: Tensor, mask: Optional[Tensor] = None) -> Tensor:
|
|
887
|
+
"""Forward pass.
|
|
888
|
+
|
|
889
|
+
Parameters
|
|
890
|
+
----------
|
|
891
|
+
x : Tensor
|
|
892
|
+
Input tensor of shape ``(batch, seq, emb_size)``.
|
|
893
|
+
mask : Tensor, optional
|
|
894
|
+
Attention mask following PyTorch SDPA convention: for boolean
|
|
895
|
+
masks ``True`` means **ignore** that position; for float
|
|
896
|
+
masks the values are **added** to attention scores before
|
|
897
|
+
softmax.
|
|
898
|
+
"""
|
|
870
899
|
queries = self.rearrange_stack(self.queries(x))
|
|
871
900
|
keys = self.rearrange_stack(self.keys(x))
|
|
872
901
|
values = self.rearrange_stack(self.values(x))
|
|
873
|
-
|
|
874
|
-
if
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
902
|
+
|
|
903
|
+
dp = self.att_drop if self.training else 0.0
|
|
904
|
+
out = F.scaled_dot_product_attention(
|
|
905
|
+
queries,
|
|
906
|
+
keys,
|
|
907
|
+
values,
|
|
908
|
+
attn_mask=mask,
|
|
909
|
+
dropout_p=dp,
|
|
910
|
+
)
|
|
911
|
+
|
|
882
912
|
out = self.rearrange_unstack(out)
|
|
883
|
-
|
|
884
|
-
return out
|
|
913
|
+
return self.projection(out)
|
|
885
914
|
|
|
886
915
|
|
|
887
916
|
class CrissCrossTransformerEncoderLayer(nn.Module):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.0.dev182195895"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev182195895
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Alexandre Gramfort <agramfort@meta.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -28,10 +28,19 @@ Current 1.5.0 (GitHub)
|
|
|
28
28
|
Enhancements
|
|
29
29
|
============
|
|
30
30
|
|
|
31
|
+
- Use ``F.scaled_dot_product_attention`` in :class:`braindecode.modules.MultiHeadAttention`,
|
|
32
|
+
enabling optimized attention kernels (flash-attention on CUDA,
|
|
33
|
+
memory-efficient backends on other devices).
|
|
34
|
+
By `Léo Burgund`_ and `Bruno Aristimunha`_.
|
|
35
|
+
(:gh:`902`)
|
|
36
|
+
|
|
31
37
|
API and behavior changes
|
|
32
38
|
========================
|
|
33
39
|
|
|
34
|
-
-
|
|
40
|
+
- :class:`braindecode.modules.MultiHeadAttention` now follows PyTorch's SDPA mask
|
|
41
|
+
convention: boolean masks use ``True`` to **ignore** a position (previously
|
|
42
|
+
``True`` meant keep). The scaling factor is now ``1/sqrt(head_dim)`` instead of
|
|
43
|
+
``1/sqrt(emb_size)``. (:gh:`902`)
|
|
35
44
|
|
|
36
45
|
Requirements
|
|
37
46
|
============
|
|
@@ -60,6 +69,9 @@ Bug fixes
|
|
|
60
69
|
is never replaced, making the cache safe under arbitrary
|
|
61
70
|
concurrent access on local POSIX, NFSv3, Lustre and SMB
|
|
62
71
|
(:gh:`986` by `Pierre Guetschel`_)
|
|
72
|
+
- Register :class:`braindecode.models.BIOT` encoder ``index`` as a non-trainable
|
|
73
|
+
buffer instead of a parameter (``torch.long``), so it is treated as module
|
|
74
|
+
state rather than trainable weights (:gh:`988` by `Pierre Guetschel`_)
|
|
63
75
|
|
|
64
76
|
Code health
|
|
65
77
|
============
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.5.0.dev984"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/base.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/functional.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/augmentation/transforms.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/datasets.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/format.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub_format.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/hub_io.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/bids/iterable.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datasets/sleep_physionet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/channel_utils.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/hub_formats.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/datautil/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/functions.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/functional/initialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/attentionbasenet.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/attn_sleep.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/brainmodule.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/deepsleepnet.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegconformer.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eeginception_erp.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eeginception_mi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/eegsimpleconv.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/fblightconvnet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/patchedtransformer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/shallow_fbcsp.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/signal_jepa.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/sinc_shallow.py
RENAMED
|
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
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/models/tsinception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/activation.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/convolution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/modules/parametrization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/preprocess.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/util.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/preprocessing/windowers.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/samplers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/training/callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/visualization/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode/visualization/gradients.py
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/requires.txt
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/braindecode.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/class.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/_templates/autosummary/function.rst
RENAMED
|
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
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/attention.rst
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/channel.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/gnn.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/lbm.rst
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/recurrent.rst
RENAMED
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/categorization/spd.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models_categorization.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.5.0.dev984 → braindecode-1.5.0.dev182195895}/docs/models/models_visualization.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|