Braindecode 1.3.0.dev169126795__tar.gz → 1.3.0.dev169361694__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.
Files changed (147) hide show
  1. {braindecode-1.3.0.dev169126795/braindecode.egg-info → braindecode-1.3.0.dev169361694}/PKG-INFO +1 -1
  2. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/atcnet.py +9 -9
  3. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/biot.py +21 -21
  4. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/ctnet.py +28 -28
  5. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegconformer.py +17 -17
  6. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/labram.py +34 -34
  7. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/medformer.py +12 -12
  8. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/msvtnet.py +9 -9
  9. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/patchedtransformer.py +42 -42
  10. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/summary.csv +1 -1
  11. braindecode-1.3.0.dev169361694/braindecode/version.py +1 -0
  12. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694/braindecode.egg-info}/PKG-INFO +1 -1
  13. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/whats_new.rst +0 -1
  14. braindecode-1.3.0.dev169126795/braindecode/version.py +0 -1
  15. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/LICENSE.txt +0 -0
  16. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/MANIFEST.in +0 -0
  17. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/NOTICE.txt +0 -0
  18. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/README.rst +0 -0
  19. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/__init__.py +0 -0
  20. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/augmentation/__init__.py +0 -0
  21. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/augmentation/base.py +0 -0
  22. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/augmentation/functional.py +0 -0
  23. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/augmentation/transforms.py +0 -0
  24. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/classifier.py +0 -0
  25. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/__init__.py +0 -0
  26. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/base.py +0 -0
  27. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/bbci.py +0 -0
  28. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/bcicomp.py +0 -0
  29. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/bids.py +0 -0
  30. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/experimental.py +0 -0
  31. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/hub.py +0 -0
  32. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/hub_validation.py +0 -0
  33. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/mne.py +0 -0
  34. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/moabb.py +0 -0
  35. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/nmt.py +0 -0
  36. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/registry.py +0 -0
  37. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  38. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/sleep_physionet.py +0 -0
  39. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/tuh.py +0 -0
  40. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datasets/xy.py +0 -0
  41. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datautil/__init__.py +0 -0
  42. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datautil/channel_utils.py +0 -0
  43. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datautil/hub_formats.py +0 -0
  44. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datautil/serialization.py +0 -0
  45. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/datautil/util.py +0 -0
  46. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/eegneuralnet.py +0 -0
  47. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/functional/__init__.py +0 -0
  48. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/functional/functions.py +0 -0
  49. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/functional/initialization.py +0 -0
  50. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/__init__.py +0 -0
  51. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/attentionbasenet.py +0 -0
  52. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/attn_sleep.py +0 -0
  53. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/base.py +0 -0
  54. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/bendr.py +0 -0
  55. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/contrawr.py +0 -0
  56. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/deep4.py +0 -0
  57. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/deepsleepnet.py +0 -0
  58. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eeginception_erp.py +0 -0
  59. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eeginception_mi.py +0 -0
  60. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegitnet.py +0 -0
  61. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegminer.py +0 -0
  62. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegnet.py +0 -0
  63. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegnex.py +0 -0
  64. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegsimpleconv.py +0 -0
  65. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegsym.py +0 -0
  66. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/eegtcnet.py +0 -0
  67. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/fbcnet.py +0 -0
  68. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/fblightconvnet.py +0 -0
  69. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/fbmsnet.py +0 -0
  70. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/hybrid.py +0 -0
  71. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/ifnet.py +0 -0
  72. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/luna.py +0 -0
  73. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sccnet.py +0 -0
  74. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/shallow_fbcsp.py +0 -0
  75. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/signal_jepa.py +0 -0
  76. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sinc_shallow.py +0 -0
  77. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  78. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  79. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sparcnet.py +0 -0
  80. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/sstdpn.py +0 -0
  81. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/syncnet.py +0 -0
  82. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/tcn.py +0 -0
  83. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/tidnet.py +0 -0
  84. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/tsinception.py +0 -0
  85. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/usleep.py +0 -0
  86. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/models/util.py +0 -0
  87. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/__init__.py +0 -0
  88. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/activation.py +0 -0
  89. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/attention.py +0 -0
  90. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/blocks.py +0 -0
  91. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/convolution.py +0 -0
  92. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/filter.py +0 -0
  93. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/layers.py +0 -0
  94. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/linear.py +0 -0
  95. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/parametrization.py +0 -0
  96. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/stats.py +0 -0
  97. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/util.py +0 -0
  98. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/modules/wrapper.py +0 -0
  99. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/__init__.py +0 -0
  100. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  101. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/mne_preprocess.py +0 -0
  102. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/preprocess.py +0 -0
  103. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/util.py +0 -0
  104. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/preprocessing/windowers.py +0 -0
  105. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/regressor.py +0 -0
  106. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/samplers/__init__.py +0 -0
  107. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/samplers/base.py +0 -0
  108. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/samplers/ssl.py +0 -0
  109. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/training/__init__.py +0 -0
  110. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/training/callbacks.py +0 -0
  111. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/training/losses.py +0 -0
  112. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/training/scoring.py +0 -0
  113. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/util.py +0 -0
  114. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/visualization/__init__.py +0 -0
  115. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/visualization/confusion_matrices.py +0 -0
  116. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode/visualization/gradients.py +0 -0
  117. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode.egg-info/SOURCES.txt +0 -0
  118. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode.egg-info/dependency_links.txt +0 -0
  119. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode.egg-info/requires.txt +0 -0
  120. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/braindecode.egg-info/top_level.txt +0 -0
  121. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/Makefile +0 -0
  122. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/_templates/autosummary/class.rst +0 -0
  123. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/_templates/autosummary/function.rst +0 -0
  124. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/api.rst +0 -0
  125. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/cite.rst +0 -0
  126. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/conf.py +0 -0
  127. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/help.rst +0 -0
  128. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/index.rst +0 -0
  129. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/install/install.rst +0 -0
  130. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/install/install_pip.rst +0 -0
  131. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/install/install_source.rst +0 -0
  132. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/attention.rst +0 -0
  133. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/channel.rst +0 -0
  134. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/convolution.rst +0 -0
  135. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/filterbank.rst +0 -0
  136. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/gnn.rst +0 -0
  137. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/interpretable.rst +0 -0
  138. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/lbm.rst +0 -0
  139. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/recurrent.rst +0 -0
  140. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/categorization/spd.rst +0 -0
  141. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/models.rst +0 -0
  142. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/models_categorization.rst +0 -0
  143. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/models_table.rst +0 -0
  144. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/models/models_visualization.rst +0 -0
  145. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/docs/sg_execution_times.rst +0 -0
  146. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/pyproject.toml +0 -0
  147. {braindecode-1.3.0.dev169126795 → braindecode-1.3.0.dev169361694}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.3.0.dev169126795
3
+ Version: 1.3.0.dev169361694
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>
@@ -141,7 +141,7 @@ class ATCNet(EEGModuleMixin, nn.Module):
141
141
  - Pool sizes ``P1,P2`` trade temporal resolution for stability/compute; they set
142
142
  ``T_c = T/(P1·P2)`` and thus window width ``T_w``.
143
143
  - ``n_windows`` controls the ensemble over shifts (compute ∝ windows).
144
- - ``num_heads``, ``head_dim`` set attention capacity; keep ``H·d_h ≈ F2``.
144
+ - ``att_num_heads``, ``att_head_dim`` set attention capacity; keep ``H·d_h ≈ F2``.
145
145
  - ``tcn_depth``, ``tcn_kernel_size`` govern receptive field; larger values demand
146
146
  longer inputs (see minimum length above). The implementation warns and *rescales*
147
147
  kernels/pools/windows if inputs are too short.
@@ -194,10 +194,10 @@ class ATCNet(EEGModuleMixin, nn.Module):
194
194
  table 1 of the paper [1]_. Defaults to 0.3 as in [1]_.
195
195
  n_windows : int
196
196
  Number of sliding windows, denoted n in [1]_. Defaults to 5 as in [1]_.
197
- head_dim : int
197
+ att_head_dim : int
198
198
  Embedding dimension used in each self-attention head, denoted dh in
199
199
  table 1 of the paper [1]_. Defaults to 8 as in [1]_.
200
- num_heads : int
200
+ att_num_heads : int
201
201
  Number of attention heads, denoted H in table 1 of the paper [1]_.
202
202
  Defaults to 2 as in [1]_.
203
203
  att_dropout : float
@@ -248,8 +248,8 @@ class ATCNet(EEGModuleMixin, nn.Module):
248
248
  conv_block_depth_mult=2,
249
249
  conv_block_dropout=0.3,
250
250
  n_windows=5,
251
- head_dim=8,
252
- num_heads=2,
251
+ att_head_dim=8,
252
+ att_num_heads=2,
253
253
  att_drop_prob=0.5,
254
254
  tcn_depth=2,
255
255
  tcn_kernel_size=4,
@@ -316,8 +316,8 @@ class ATCNet(EEGModuleMixin, nn.Module):
316
316
  self.conv_block_depth_mult = conv_block_depth_mult
317
317
  self.conv_block_dropout = conv_block_dropout
318
318
  self.n_windows = n_windows
319
- self.head_dim = head_dim
320
- self.num_heads = num_heads
319
+ self.att_head_dim = att_head_dim
320
+ self.att_num_heads = att_num_heads
321
321
  self.att_dropout = att_drop_prob
322
322
  self.tcn_depth = tcn_depth
323
323
  self.tcn_kernel_size = tcn_kernel_size
@@ -356,8 +356,8 @@ class ATCNet(EEGModuleMixin, nn.Module):
356
356
  [
357
357
  _AttentionBlock(
358
358
  in_shape=self.F2,
359
- head_dim=self.head_dim,
360
- num_heads=num_heads,
359
+ head_dim=self.att_head_dim,
360
+ num_heads=att_num_heads,
361
361
  dropout=att_drop_prob,
362
362
  )
363
363
  for _ in range(self.n_windows)
@@ -45,11 +45,11 @@ class BIOT(EEGModuleMixin, nn.Module):
45
45
 
46
46
  Parameters
47
47
  ----------
48
- embed_dim : int, optional
48
+ emb_size : int, optional
49
49
  The size of the embedding layer, by default 256
50
- num_heads : int, optional
50
+ att_num_heads : int, optional
51
51
  The number of attention heads, by default 8
52
- num_layers : int, optional
52
+ n_layers : int, optional
53
53
  The number of transformer layers, by default 4
54
54
  activation: nn.Module, default=nn.ELU
55
55
  Activation function class to apply. Should be a PyTorch activation
@@ -76,9 +76,9 @@ class BIOT(EEGModuleMixin, nn.Module):
76
76
 
77
77
  def __init__(
78
78
  self,
79
- embed_dim=256,
80
- num_heads=8,
81
- num_layers=4,
79
+ emb_size=256,
80
+ att_num_heads=8,
81
+ n_layers=4,
82
82
  sfreq=200,
83
83
  hop_length=100,
84
84
  return_feature=False,
@@ -91,8 +91,8 @@ class BIOT(EEGModuleMixin, nn.Module):
91
91
  drop_prob: float = 0.5,
92
92
  # Parameters for the encoder
93
93
  max_seq_len: int = 1024,
94
- att_drop_prob=0.2,
95
- att_layer_drop_prob=0.2,
94
+ attn_dropout=0.2,
95
+ attn_layer_dropout=0.2,
96
96
  ):
97
97
  super().__init__(
98
98
  n_outputs=n_outputs,
@@ -103,10 +103,10 @@ class BIOT(EEGModuleMixin, nn.Module):
103
103
  sfreq=sfreq,
104
104
  )
105
105
  del n_outputs, n_chans, chs_info, n_times, sfreq
106
- self.embed_dim = embed_dim
106
+ self.emb_size = emb_size
107
107
  self.hop_length = hop_length
108
- self.num_heads = num_heads
109
- self.num_layers = num_layers
108
+ self.att_num_heads = att_num_heads
109
+ self.n_layers = n_layers
110
110
  self.return_feature = return_feature
111
111
  if (self.sfreq != 200) & (self.sfreq is not None):
112
112
  warn(
@@ -114,7 +114,7 @@ class BIOT(EEGModuleMixin, nn.Module):
114
114
  + "no guarantee to generalize well with the default parameters",
115
115
  UserWarning,
116
116
  )
117
- if self.n_chans > embed_dim:
117
+ if self.n_chans > emb_size:
118
118
  warn(
119
119
  "The number of channels is larger than the embedding size. "
120
120
  + "This may cause overfitting. Consider using a larger "
@@ -142,20 +142,20 @@ class BIOT(EEGModuleMixin, nn.Module):
142
142
  self.n_fft = int(self.sfreq)
143
143
 
144
144
  self.encoder = _BIOTEncoder(
145
- emb_size=self.embed_dim,
146
- num_heads=self.num_heads,
147
- n_layers=self.num_layers,
145
+ emb_size=emb_size,
146
+ att_num_heads=att_num_heads,
147
+ n_layers=n_layers,
148
148
  n_chans=self.n_chans,
149
149
  n_fft=self.n_fft,
150
150
  hop_length=hop_length,
151
151
  drop_prob=drop_prob,
152
152
  max_seq_len=max_seq_len,
153
- attn_dropout=att_drop_prob,
154
- attn_layer_dropout=att_layer_drop_prob,
153
+ attn_dropout=attn_dropout,
154
+ attn_layer_dropout=attn_layer_dropout,
155
155
  )
156
156
 
157
157
  self.final_layer = _ClassificationHead(
158
- emb_size=self.embed_dim,
158
+ emb_size=emb_size,
159
159
  n_outputs=self.n_outputs,
160
160
  activation=activation,
161
161
  )
@@ -345,7 +345,7 @@ class _BIOTEncoder(nn.Module):
345
345
  The number of channels
346
346
  emb_size: int
347
347
  The size of the embedding layer
348
- num_heads: int
348
+ att_num_heads: int
349
349
  The number of attention heads
350
350
  n_layers: int
351
351
  The number of transformer layers
@@ -358,7 +358,7 @@ class _BIOTEncoder(nn.Module):
358
358
  def __init__(
359
359
  self,
360
360
  emb_size=256, # The size of the embedding layer
361
- num_heads=8, # The number of attention heads
361
+ att_num_heads=8, # The number of attention heads
362
362
  n_chans=16, # The number of channels
363
363
  n_layers=4, # The number of transformer layers
364
364
  n_fft=200, # Related with the frequency resolution
@@ -378,7 +378,7 @@ class _BIOTEncoder(nn.Module):
378
378
  )
379
379
  self.transformer = LinearAttentionTransformer(
380
380
  dim=emb_size,
381
- heads=num_heads,
381
+ heads=att_num_heads,
382
382
  depth=n_layers,
383
383
  max_seq_len=max_seq_len,
384
384
  attn_layer_dropout=attn_layer_dropout,
@@ -61,11 +61,11 @@ class CTNet(EEGModuleMixin, nn.Module):
61
61
  ----------
62
62
  activation : nn.Module, default=nn.GELU
63
63
  Activation function to use in the network.
64
- num_heads : int, default=4
64
+ heads : int, default=4
65
65
  Number of attention heads in the Transformer encoder.
66
- embed_dim : int or None, default=None
66
+ emb_size : int or None, default=None
67
67
  Embedding size (dimensionality) for the Transformer encoder.
68
- num_layers : int, default=6
68
+ depth : int, default=6
69
69
  Number of encoder layers in the Transformer.
70
70
  n_filters_time : int, default=20
71
71
  Number of temporal filters in the first convolutional layer.
@@ -77,11 +77,11 @@ class CTNet(EEGModuleMixin, nn.Module):
77
77
  Pooling size for the first average pooling layer.
78
78
  pool_size_2 : int, default=8
79
79
  Pooling size for the second average pooling layer.
80
- cnn_drop_prob: float, default=0.3
80
+ drop_prob_cnn : float, default=0.3
81
81
  Dropout probability after convolutional layers.
82
- att_positional_drop_prob : float, default=0.1
82
+ drop_prob_posi : float, default=0.1
83
83
  Dropout probability for the positional encoding in the Transformer.
84
- final_drop_prob : float, default=0.5
84
+ drop_prob_final : float, default=0.5
85
85
  Dropout probability before the final classification layer.
86
86
 
87
87
  Notes
@@ -111,13 +111,13 @@ class CTNet(EEGModuleMixin, nn.Module):
111
111
  # Model specific arguments
112
112
  activation_patch: nn.Module = nn.ELU,
113
113
  activation_transformer: nn.Module = nn.GELU,
114
- cnn_drop_prob: float = 0.3,
115
- att_positional_drop_prob: float = 0.1,
116
- final_drop_prob: float = 0.5,
114
+ drop_prob_cnn: float = 0.3,
115
+ drop_prob_posi: float = 0.1,
116
+ drop_prob_final: float = 0.5,
117
117
  # other parameters
118
- num_heads: int = 4,
119
- embed_dim: Optional[int] = 40,
120
- num_layers: int = 6,
118
+ heads: int = 4,
119
+ emb_size: Optional[int] = 40,
120
+ depth: int = 6,
121
121
  n_filters_time: Optional[int] = None,
122
122
  kernel_size: int = 64,
123
123
  depth_multiplier: Optional[int] = 2,
@@ -136,14 +136,14 @@ class CTNet(EEGModuleMixin, nn.Module):
136
136
 
137
137
  self.activation_patch = activation_patch
138
138
  self.activation_transformer = activation_transformer
139
- self.cnn_drop_prob = cnn_drop_prob
139
+ self.drop_prob_cnn = drop_prob_cnn
140
140
  self.pool_size_1 = pool_size_1
141
141
  self.pool_size_2 = pool_size_2
142
142
  self.kernel_size = kernel_size
143
- self.att_positional_drop_prob = att_positional_drop_prob
144
- self.final_drop_prob = final_drop_prob
145
- self.num_heads = num_heads
146
- self.num_layers = num_layers
143
+ self.drop_prob_posi = drop_prob_posi
144
+ self.drop_prob_final = drop_prob_final
145
+ self.heads = heads
146
+ self.depth = depth
147
147
  # n_times - pool_size_1 / p
148
148
  self.sequence_length = math.floor(
149
149
  (
@@ -154,8 +154,8 @@ class CTNet(EEGModuleMixin, nn.Module):
154
154
  + 1
155
155
  )
156
156
 
157
- self.depth_multiplier, self.n_filters_time, self.embed_dim = self._resolve_dims(
158
- depth_multiplier, n_filters_time, embed_dim
157
+ self.depth_multiplier, self.n_filters_time, self.emb_size = self._resolve_dims(
158
+ depth_multiplier, n_filters_time, emb_size
159
159
  )
160
160
 
161
161
  # Layers
@@ -168,32 +168,32 @@ class CTNet(EEGModuleMixin, nn.Module):
168
168
  depth_multiplier=self.depth_multiplier,
169
169
  pool_size_1=self.pool_size_1,
170
170
  pool_size_2=self.pool_size_2,
171
- drop_prob=self.cnn_drop_prob,
171
+ drop_prob=self.drop_prob_cnn,
172
172
  n_chans=self.n_chans,
173
173
  activation=self.activation_patch,
174
174
  )
175
175
 
176
176
  self.position = _PositionalEncoding(
177
- emb_size=self.embed_dim,
178
- drop_prob=self.att_positional_drop_prob,
177
+ emb_size=self.emb_size,
178
+ drop_prob=self.drop_prob_posi,
179
179
  n_times=self.n_times,
180
180
  pool_size=self.pool_size_1,
181
181
  )
182
182
 
183
183
  self.trans = _TransformerEncoder(
184
- self.num_heads,
185
- self.num_layers,
186
- self.embed_dim,
184
+ self.heads,
185
+ self.depth,
186
+ self.emb_size,
187
187
  activation=self.activation_transformer,
188
188
  )
189
189
 
190
190
  self.flatten_drop_layer = nn.Sequential(
191
191
  nn.Flatten(),
192
- nn.Dropout(p=self.final_drop_prob),
192
+ nn.Dropout(p=self.drop_prob_final),
193
193
  )
194
194
 
195
195
  self.final_layer = nn.Linear(
196
- in_features=int(self.embed_dim * self.sequence_length),
196
+ in_features=int(self.emb_size * self.sequence_length),
197
197
  out_features=self.n_outputs,
198
198
  )
199
199
 
@@ -213,7 +213,7 @@ class CTNet(EEGModuleMixin, nn.Module):
213
213
  """
214
214
  x = self.ensuredim(x)
215
215
  cnn = self.cnn(x)
216
- cnn = cnn * math.sqrt(self.embed_dim)
216
+ cnn = cnn * math.sqrt(self.emb_size)
217
217
  cnn = self.position(cnn)
218
218
  trans = self.trans(cnn)
219
219
  features = cnn + trans
@@ -57,9 +57,9 @@ class EEGConformer(EEGModuleMixin, nn.Module):
57
57
  - :class:`_TransformerEncoder` **(context over temporal tokens)**
58
58
 
59
59
  - *Operations.*
60
- - A stack of ``num_layers`` encoder blocks. :class:`_TransformerEncoderBlock`
60
+ - A stack of ``att_depth`` encoder blocks. :class:`_TransformerEncoderBlock`
61
61
  - Each block applies LayerNorm :class:`torch.nn.LayerNorm`
62
- - Multi-Head Self-Attention (``num_heads``) with dropout + residual :class:`MultiHeadAttention` (:class:`torch.nn.Dropout`)
62
+ - Multi-Head Self-Attention (``att_heads``) with dropout + residual :class:`MultiHeadAttention` (:class:`torch.nn.Dropout`)
63
63
  - LayerNorm :class:`torch.nn.LayerNorm`
64
64
  - 2-layer feed-forward (≈4x expansion, :class:`torch.nn.GELU`) with dropout + residual.
65
65
 
@@ -100,7 +100,7 @@ class EEGConformer(EEGModuleMixin, nn.Module):
100
100
 
101
101
  .. rubric:: Attention / Sequential Modules
102
102
 
103
- - **Type.** Standard multi-head self-attention (MHA) with ``num_heads`` heads over the token sequence.
103
+ - **Type.** Standard multi-head self-attention (MHA) with ``att_heads`` heads over the token sequence.
104
104
  - **Shapes.** Input/Output: ``(B, S_tokens, D)``; attention operates along the ``S_tokens`` axis.
105
105
  - **Role.** Re-weights and integrates evidence across pooled windows, capturing dependencies
106
106
  longer than any single token while leaving channel relationships to the convolutional stem.
@@ -127,7 +127,7 @@ class EEGConformer(EEGModuleMixin, nn.Module):
127
127
  - **Instantiation.** Choose ``n_filters_time`` (embedding size ``D``) and
128
128
  ``filter_time_length`` to match the rhythms of interest. Tune
129
129
  ``pool_time_length/stride`` to trade temporal resolution for sequence length.
130
- Keep ``num_layers`` modest (e.g., 4–6) and set ``num_heads`` to divide ``D``.
130
+ Keep ``att_depth`` modest (e.g., 4–6) and set ``att_heads`` to divide ``D``.
131
131
  ``final_fc_length="auto"`` infers the flattened size from PatchEmbedding.
132
132
 
133
133
  Notes
@@ -160,9 +160,9 @@ class EEGConformer(EEGModuleMixin, nn.Module):
160
160
  Length of stride between temporal pooling filters.
161
161
  drop_prob: float
162
162
  Dropout rate of the convolutional layer.
163
- num_layers: int
163
+ att_depth: int
164
164
  Number of self-attention layers.
165
- num_heads: int
165
+ att_heads: int
166
166
  Number of attention heads.
167
167
  att_drop_prob: float
168
168
  Dropout rate of the self-attention layer.
@@ -197,8 +197,8 @@ class EEGConformer(EEGModuleMixin, nn.Module):
197
197
  pool_time_length=75,
198
198
  pool_time_stride=15,
199
199
  drop_prob=0.5,
200
- num_layers=6,
201
- num_heads=10,
200
+ att_depth=6,
201
+ att_heads=10,
202
202
  att_drop_prob=0.5,
203
203
  final_fc_length="auto",
204
204
  return_features=False,
@@ -250,9 +250,9 @@ class EEGConformer(EEGModuleMixin, nn.Module):
250
250
  self.final_fc_length = final_fc_length
251
251
 
252
252
  self.transformer = _TransformerEncoder(
253
- num_layers=num_layers,
253
+ att_depth=att_depth,
254
254
  emb_size=n_filters_time,
255
- num_heads=num_heads,
255
+ att_heads=att_heads,
256
256
  att_drop=att_drop_prob,
257
257
  activation=activation_transfor,
258
258
  )
@@ -364,7 +364,7 @@ class _TransformerEncoderBlock(nn.Sequential):
364
364
  def __init__(
365
365
  self,
366
366
  emb_size,
367
- num_heads,
367
+ att_heads,
368
368
  att_drop,
369
369
  forward_expansion=4,
370
370
  activation: nn.Module = nn.GELU,
@@ -373,7 +373,7 @@ class _TransformerEncoderBlock(nn.Sequential):
373
373
  _ResidualAdd(
374
374
  nn.Sequential(
375
375
  nn.LayerNorm(emb_size),
376
- MultiHeadAttention(emb_size, num_heads, att_drop),
376
+ MultiHeadAttention(emb_size, att_heads, att_drop),
377
377
  nn.Dropout(att_drop),
378
378
  )
379
379
  ),
@@ -399,11 +399,11 @@ class _TransformerEncoder(nn.Sequential):
399
399
 
400
400
  Parameters
401
401
  ----------
402
- num_layers : int
402
+ att_depth : int
403
403
  Number of transformer encoder blocks.
404
404
  emb_size : int
405
405
  Embedding size of the transformer encoder.
406
- num_heads : int
406
+ att_heads : int
407
407
  Number of attention heads.
408
408
  att_drop : float
409
409
  Dropout probability for the attention layers.
@@ -411,14 +411,14 @@ class _TransformerEncoder(nn.Sequential):
411
411
  """
412
412
 
413
413
  def __init__(
414
- self, num_layers, emb_size, num_heads, att_drop, activation: nn.Module = nn.GELU
414
+ self, att_depth, emb_size, att_heads, att_drop, activation: nn.Module = nn.GELU
415
415
  ):
416
416
  super().__init__(
417
417
  *[
418
418
  _TransformerEncoderBlock(
419
- emb_size, num_heads, att_drop, activation=activation
419
+ emb_size, att_heads, att_drop, activation=activation
420
420
  )
421
- for _ in range(num_layers)
421
+ for _ in range(att_depth)
422
422
  ]
423
423
  )
424
424
 
@@ -83,15 +83,15 @@ class Labram(EEGModuleMixin, nn.Module):
83
83
  ----------
84
84
  patch_size : int
85
85
  The size of the patch to be used in the patch embedding.
86
- embed_dim : int
86
+ emb_size : int
87
87
  The dimension of the embedding.
88
- conv_in_channels : int
88
+ in_conv_channels : int
89
89
  The number of convolutional input channels.
90
- conv_out_channels : int
90
+ out_channels : int
91
91
  The number of convolutional output channels.
92
- num_layers : int (default=12)
92
+ n_layers : int (default=12)
93
93
  The number of attention layers of the model.
94
- num_heads : int (default=10)
94
+ att_num_heads : int (default=10)
95
95
  The number of attention heads.
96
96
  mlp_ratio : float (default=4.0)
97
97
  The expansion ratio of the mlp layer
@@ -155,11 +155,11 @@ class Labram(EEGModuleMixin, nn.Module):
155
155
  sfreq=None,
156
156
  input_window_seconds=None,
157
157
  patch_size=200,
158
- embed_dim=200,
159
- conv_in_channels=1,
160
- conv_out_channels=8,
161
- num_layers=12,
162
- num_heads=10,
158
+ emb_size=200,
159
+ in_conv_channels=1,
160
+ out_channels=8,
161
+ n_layers=12,
162
+ att_num_heads=10,
163
163
  mlp_ratio=4.0,
164
164
  qkv_bias=False,
165
165
  qk_norm=nn.LayerNorm,
@@ -187,7 +187,7 @@ class Labram(EEGModuleMixin, nn.Module):
187
187
  del n_outputs, n_chans, chs_info, n_times, input_window_seconds, sfreq
188
188
 
189
189
  self.patch_size = patch_size
190
- self.num_features = self.embed_dim = embed_dim
190
+ self.num_features = self.emb_size = emb_size
191
191
  self.neural_tokenizer = neural_tokenizer
192
192
  self.init_scale = init_scale
193
193
 
@@ -199,20 +199,20 @@ class Labram(EEGModuleMixin, nn.Module):
199
199
  )
200
200
  self.patch_size = self.n_times
201
201
  self.num_features = None
202
- self.embed_dim = None
202
+ self.emb_size = None
203
203
  else:
204
204
  self.patch_size = patch_size
205
205
  self.n_path = self.n_times // self.patch_size
206
206
 
207
- if neural_tokenizer and conv_in_channels != 1:
207
+ if neural_tokenizer and in_conv_channels != 1:
208
208
  warn(
209
209
  "The model is in Neural Tokenizer mode, but the variable "
210
- + "`conv_in_channels` is different from the default values."
211
- + "`conv_in_channels` is only needed for the Neural Decoder mode."
212
- + "conv_in_channels is not used in the Neural Tokenizer mode.",
210
+ + "`in_conv_channels` is different from the default values."
211
+ + "`in_conv_channels` is only needed for the Neural Decoder mode."
212
+ + "in_conv_channels is not used in the Neural Tokenizer mode.",
213
213
  UserWarning,
214
214
  )
215
- conv_in_channels = 1
215
+ in_conv_channels = 1
216
216
  # If you can use the model in Neural Tokenizer mode,
217
217
  # temporal conv layer will be use over the patched dataset
218
218
  if neural_tokenizer:
@@ -231,7 +231,7 @@ class Labram(EEGModuleMixin, nn.Module):
231
231
  (
232
232
  "temporal_conv",
233
233
  _TemporalConv(
234
- out_channels=conv_out_channels, activation=activation
234
+ out_channels=out_channels, activation=activation
235
235
  ),
236
236
  ),
237
237
  ]
@@ -249,8 +249,8 @@ class Labram(EEGModuleMixin, nn.Module):
249
249
  _PatchEmbed(
250
250
  n_times=self.n_times,
251
251
  patch_size=patch_size,
252
- in_channels=conv_in_channels,
253
- emb_dim=self.embed_dim,
252
+ in_channels=in_conv_channels,
253
+ emb_dim=self.emb_size,
254
254
  ),
255
255
  )
256
256
 
@@ -259,12 +259,12 @@ class Labram(EEGModuleMixin, nn.Module):
259
259
  out = self.patch_embed(dummy)
260
260
  # out.shape for tokenizer: (1, n_chans, emb_dim)
261
261
  # for decoder: (1, n_patch, patch_size, emb_dim), but we want last dim
262
- self.embed_dim = out.shape[-1]
263
- self.num_features = self.embed_dim
262
+ self.emb_size = out.shape[-1]
263
+ self.num_features = self.emb_size
264
264
 
265
265
  # Defining the parameters
266
266
  # Creating a parameter list with cls token]
267
- self.cls_token = nn.Parameter(torch.zeros(1, 1, self.embed_dim))
267
+ self.cls_token = nn.Parameter(torch.zeros(1, 1, self.emb_size))
268
268
  # Positional embedding and time embedding are complementary
269
269
  # one is for the spatial information and the other is for the temporal
270
270
  # information.
@@ -273,26 +273,26 @@ class Labram(EEGModuleMixin, nn.Module):
273
273
  # information.
274
274
  if use_abs_pos_emb:
275
275
  self.position_embedding = nn.Parameter(
276
- torch.zeros(1, self.n_chans + 1, self.embed_dim),
276
+ torch.zeros(1, self.n_chans + 1, self.emb_size),
277
277
  requires_grad=True,
278
278
  )
279
279
  else:
280
280
  self.position_embedding = None
281
281
 
282
282
  self.temporal_embedding = nn.Parameter(
283
- torch.zeros(1, self.patch_embed[0].n_patchs + 1, self.embed_dim),
283
+ torch.zeros(1, self.patch_embed[0].n_patchs + 1, self.emb_size),
284
284
  requires_grad=True,
285
285
  )
286
286
  self.pos_drop = nn.Dropout(p=drop_prob)
287
287
 
288
288
  dpr = [
289
- x.item() for x in torch.linspace(0, drop_path_prob, num_layers)
289
+ x.item() for x in torch.linspace(0, drop_path_prob, n_layers)
290
290
  ] # stochastic depth decay rule
291
291
  self.blocks = nn.ModuleList(
292
292
  [
293
293
  _WindowsAttentionBlock(
294
- dim=self.embed_dim,
295
- num_heads=num_heads,
294
+ dim=self.emb_size,
295
+ num_heads=att_num_heads,
296
296
  mlp_ratio=mlp_ratio,
297
297
  qkv_bias=qkv_bias,
298
298
  qk_norm=qk_norm,
@@ -310,14 +310,14 @@ class Labram(EEGModuleMixin, nn.Module):
310
310
  attn_head_dim=attn_head_dim,
311
311
  activation=activation,
312
312
  )
313
- for i in range(num_layers)
313
+ for i in range(n_layers)
314
314
  ]
315
315
  )
316
- self.norm = nn.Identity() if use_mean_pooling else norm_layer(self.embed_dim)
317
- self.fc_norm = norm_layer(self.embed_dim) if use_mean_pooling else None
316
+ self.norm = nn.Identity() if use_mean_pooling else norm_layer(self.emb_size)
317
+ self.fc_norm = norm_layer(self.emb_size) if use_mean_pooling else None
318
318
 
319
319
  if self.n_outputs > 0:
320
- self.final_layer = nn.Linear(self.embed_dim, self.n_outputs)
320
+ self.final_layer = nn.Linear(self.emb_size, self.n_outputs)
321
321
  else:
322
322
  self.final_layer = nn.Identity()
323
323
 
@@ -415,7 +415,7 @@ class Labram(EEGModuleMixin, nn.Module):
415
415
  x = self.patch_embed(x)
416
416
  # x shape: (batch, n_chans, emb_dim)
417
417
  n_patch = self.n_chans
418
- temporal = self.embed_dim
418
+ temporal = self.emb_size
419
419
  else:
420
420
  # For neural decoder: input is (batch, n_chans, n_times)
421
421
  # patch_embed returns (batch, n_patchs, emb_dim)
@@ -462,7 +462,7 @@ class Labram(EEGModuleMixin, nn.Module):
462
462
  # In decoder mode, we have n_patch patches and don't need to expand
463
463
  # Just broadcast the temporal embedding
464
464
  if temporal is None:
465
- temporal = self.embed_dim
465
+ temporal = self.emb_size
466
466
 
467
467
  # Get temporal embeddings for n_patch patches
468
468
  n_time_tokens = min(n_patch, self.temporal_embedding.shape[1] - 1)