Braindecode 1.6.1.dev169782001__tar.gz → 1.6.1.dev171935310__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 (175) hide show
  1. {braindecode-1.6.1.dev169782001/braindecode.egg-info → braindecode-1.6.1.dev171935310}/PKG-INFO +1 -1
  2. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/functional/__init__.py +0 -2
  3. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/functional/functions.py +0 -39
  4. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/biot.py +10 -3
  5. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/fbmsnet.py +5 -18
  6. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/medformer.py +22 -4
  7. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/steegformer.py +8 -2
  8. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/summary.csv +61 -61
  9. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/__init__.py +1 -2
  10. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/activation.py +0 -34
  11. braindecode-1.6.1.dev171935310/braindecode/version.py +1 -0
  12. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310/braindecode.egg-info}/PKG-INFO +1 -1
  13. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/api.rst +0 -2
  14. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/conf.py +0 -14
  15. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/models_table.rst +1 -4
  16. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/whats_new.rst +0 -22
  17. braindecode-1.6.1.dev169782001/braindecode/version.py +0 -1
  18. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/LICENSE.txt +0 -0
  19. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/MANIFEST.in +0 -0
  20. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/NOTICE.txt +0 -0
  21. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/README.rst +0 -0
  22. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/__init__.py +0 -0
  23. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/augmentation/__init__.py +0 -0
  24. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/augmentation/base.py +0 -0
  25. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/augmentation/functional.py +0 -0
  26. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/augmentation/transforms.py +0 -0
  27. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/classifier.py +0 -0
  28. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/__init__.py +0 -0
  29. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/base.py +0 -0
  30. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bbci.py +0 -0
  31. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bcicomp.py +0 -0
  32. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/__init__.py +0 -0
  33. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/datasets.py +0 -0
  34. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/format.py +0 -0
  35. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/hub.py +0 -0
  36. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/hub_format.py +0 -0
  37. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/hub_io.py +0 -0
  38. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/hub_validation.py +0 -0
  39. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/bids/iterable.py +0 -0
  40. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/chb_mit.py +0 -0
  41. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/collate.py +0 -0
  42. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/mne.py +0 -0
  43. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/moabb.py +0 -0
  44. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/nmt.py +0 -0
  45. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/registry.py +0 -0
  46. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/siena.py +0 -0
  47. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  48. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/sleep_physionet.py +0 -0
  49. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/tuh.py +0 -0
  50. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/utils.py +0 -0
  51. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datasets/xy.py +0 -0
  52. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datautil/__init__.py +0 -0
  53. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datautil/channel_utils.py +0 -0
  54. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datautil/hub_formats.py +0 -0
  55. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datautil/serialization.py +0 -0
  56. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/datautil/util.py +0 -0
  57. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/eegneuralnet.py +0 -0
  58. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/functional/initialization.py +0 -0
  59. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/__init__.py +0 -0
  60. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/atcnet.py +0 -0
  61. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/attentionbasenet.py +0 -0
  62. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/attn_sleep.py +0 -0
  63. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/base.py +0 -0
  64. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/bendr.py +0 -0
  65. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/brainmodule.py +0 -0
  66. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/cbramod.py +0 -0
  67. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/codebrain.py +0 -0
  68. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/config.py +0 -0
  69. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/contrawr.py +0 -0
  70. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/ctnet.py +0 -0
  71. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/deep4.py +0 -0
  72. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/deepsleepnet.py +0 -0
  73. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/dgcnn.py +0 -0
  74. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegconformer.py +0 -0
  75. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegdino.py +0 -0
  76. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eeginception_erp.py +0 -0
  77. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eeginception_mi.py +0 -0
  78. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegitnet.py +0 -0
  79. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegminer.py +0 -0
  80. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegnet.py +0 -0
  81. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegnex.py +0 -0
  82. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegpt.py +0 -0
  83. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegsimpleconv.py +0 -0
  84. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegsym.py +0 -0
  85. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/eegtcnet.py +0 -0
  86. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/emg2qwerty.py +0 -0
  87. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/fbcnet.py +0 -0
  88. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/fblightconvnet.py +0 -0
  89. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/hybrid.py +0 -0
  90. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/ifnet.py +0 -0
  91. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/interpolated.py +0 -0
  92. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/labram.py +0 -0
  93. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/luna.py +0 -0
  94. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/meta_neuromotor.py +0 -0
  95. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/msvtnet.py +0 -0
  96. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/patchedtransformer.py +0 -0
  97. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/reve.py +0 -0
  98. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sccnet.py +0 -0
  99. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/shallow_fbcsp.py +0 -0
  100. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/signal_jepa.py +0 -0
  101. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sinc_shallow.py +0 -0
  102. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  103. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  104. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sparcnet.py +0 -0
  105. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/sstdpn.py +0 -0
  106. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/syncnet.py +0 -0
  107. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/tcformer.py +0 -0
  108. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/tcn.py +0 -0
  109. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/tidnet.py +0 -0
  110. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/tsinception.py +0 -0
  111. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/usleep.py +0 -0
  112. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/models/util.py +0 -0
  113. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/attention.py +0 -0
  114. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/blocks.py +0 -0
  115. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/convolution.py +0 -0
  116. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/filter.py +0 -0
  117. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/interpolation.py +0 -0
  118. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/layers.py +0 -0
  119. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/linear.py +0 -0
  120. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/parametrization.py +0 -0
  121. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/stats.py +0 -0
  122. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/util.py +0 -0
  123. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/modules/wrapper.py +0 -0
  124. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/__init__.py +0 -0
  125. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  126. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/mne_preprocess.py +0 -0
  127. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/preprocess.py +0 -0
  128. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/util.py +0 -0
  129. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/preprocessing/windowers.py +0 -0
  130. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/regressor.py +0 -0
  131. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/samplers/__init__.py +0 -0
  132. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/samplers/base.py +0 -0
  133. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/samplers/ssl.py +0 -0
  134. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/training/__init__.py +0 -0
  135. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/training/callbacks.py +0 -0
  136. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/training/losses.py +0 -0
  137. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/training/scoring.py +0 -0
  138. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/util.py +0 -0
  139. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/__init__.py +0 -0
  140. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/attribution.py +0 -0
  141. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/confusion_matrices.py +0 -0
  142. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/frequency.py +0 -0
  143. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/metrics.py +0 -0
  144. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/sanity.py +0 -0
  145. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode/visualization/topology.py +0 -0
  146. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode.egg-info/SOURCES.txt +0 -0
  147. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode.egg-info/dependency_links.txt +0 -0
  148. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode.egg-info/requires.txt +0 -0
  149. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/braindecode.egg-info/top_level.txt +0 -0
  150. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/Makefile +0 -0
  151. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/_templates/autosummary/class.rst +0 -0
  152. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
  153. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/_templates/autosummary/function.rst +0 -0
  154. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
  155. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/cite.rst +0 -0
  156. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/help.rst +0 -0
  157. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/index.rst +0 -0
  158. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/install/install.rst +0 -0
  159. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/install/install_pip.rst +0 -0
  160. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/install/install_source.rst +0 -0
  161. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/attention.rst +0 -0
  162. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/channel.rst +0 -0
  163. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/convolution.rst +0 -0
  164. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/filterbank.rst +0 -0
  165. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/gnn.rst +0 -0
  166. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/interpretable.rst +0 -0
  167. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/lbm.rst +0 -0
  168. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/recurrent.rst +0 -0
  169. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/categorization/spd.rst +0 -0
  170. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/models.rst +0 -0
  171. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/models_categorization.rst +0 -0
  172. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/models/models_visualization.rst +0 -0
  173. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/docs/sg_execution_times.rst +0 -0
  174. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/pyproject.toml +0 -0
  175. {braindecode-1.6.1.dev169782001 → braindecode-1.6.1.dev171935310}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.6.1.dev169782001
3
+ Version: 1.6.1.dev171935310
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>
@@ -5,7 +5,6 @@ from .functions import (
5
5
  identity,
6
6
  plv_time,
7
7
  safe_log,
8
- sinusoidal_positional_encoding,
9
8
  square,
10
9
  )
11
10
  from .initialization import glorot_weight_zero_bias, rescale_parameter
@@ -17,7 +16,6 @@ __all__ = [
17
16
  "identity",
18
17
  "plv_time",
19
18
  "safe_log",
20
- "sinusoidal_positional_encoding",
21
19
  "square",
22
20
  "glorot_weight_zero_bias",
23
21
  "rescale_parameter",
@@ -2,8 +2,6 @@
2
2
  #
3
3
  # License: BSD (3-clause)
4
4
 
5
- import math
6
-
7
5
  import torch
8
6
  import torch.nn.functional as F
9
7
 
@@ -251,40 +249,3 @@ def plv_time(x, forward_fourier=True, epsilon: float = 1e-6):
251
249
  )
252
250
 
253
251
  return plv_matrix
254
-
255
-
256
- def sinusoidal_positional_encoding(n_positions: int, dim: int) -> torch.Tensor:
257
- r"""Fixed sine/cosine positional-encoding table of shape ``(n_positions, dim)``.
258
-
259
- The standard encoding of Vaswani et al. (2017): for position :math:`p` and
260
- channel :math:`i`, :math:`pe[p, 2i] = \sin(p / 10000^{2i/d})` and
261
- :math:`pe[p, 2i+1] = \cos(p / 10000^{2i/d})`. PyTorch ships no sinusoidal
262
- encoding (``nn.Embedding`` is a *learned* lookup), so braindecode models that
263
- need one share this primitive instead of re-deriving it. An odd ``dim`` is
264
- computed on the next even width and truncated, reproducing the per-model
265
- wrappers (e.g. :class:`~braindecode.models.medformer` odd-``d_model``).
266
-
267
- Parameters
268
- ----------
269
- n_positions : int
270
- Number of positions (sequence length) to encode.
271
- dim : int
272
- Embedding dimension of each position.
273
-
274
- Returns
275
- -------
276
- torch.Tensor
277
- ``(n_positions, dim)`` float table; callers add their own batch axis,
278
- dropout, or offset.
279
- """
280
- dim_even = dim + (dim % 2)
281
- position = torch.arange(n_positions).unsqueeze(1).float()
282
- div_term = torch.exp(
283
- torch.arange(0, dim_even, 2).float() * (-math.log(10000.0) / dim_even)
284
- )
285
- pe = torch.zeros(n_positions, dim_even)
286
- pe[:, 0::2] = torch.sin(position * div_term)
287
- pe[:, 1::2] = torch.cos(position * div_term)
288
- # ``.contiguous()`` so an odd-``dim`` truncation owns tight storage -- a
289
- # non-contiguous view over the padded width breaks safetensors buffer saving.
290
- return pe[:, :dim].contiguous()
@@ -1,3 +1,4 @@
1
+ import math
1
2
  from warnings import warn
2
3
 
3
4
  import numpy as np
@@ -5,7 +6,6 @@ import torch
5
6
  import torch.nn as nn
6
7
  from linear_attention_transformer import LinearAttentionTransformer
7
8
 
8
- from braindecode.functional import sinusoidal_positional_encoding
9
9
  from braindecode.models.base import EEGModuleMixin
10
10
 
11
11
  # -----------------------------------------------------------------------------
@@ -388,8 +388,15 @@ class _PositionalEncoding(nn.Module):
388
388
  def __init__(self, emb_size: int, drop_prob: float = 0.1, max_len: int = 1000):
389
389
  super(_PositionalEncoding, self).__init__()
390
390
 
391
- # Compute the positional encodings once (shared sinusoidal primitive).
392
- pe = sinusoidal_positional_encoding(max_len, emb_size).unsqueeze(0)
391
+ # Compute the positional encodings once in log space.
392
+ pe = torch.zeros(max_len, emb_size)
393
+ position = torch.arange(0, max_len).unsqueeze(1).float()
394
+ div_term = torch.exp(
395
+ torch.arange(0, emb_size, 2).float() * -(math.log(10000.0) / emb_size)
396
+ )
397
+ pe[:, 0::2] = torch.sin(position * div_term)
398
+ pe[:, 1::2] = torch.cos(position * div_term)
399
+ pe = pe.unsqueeze(0)
393
400
  self.register_buffer("pe", pe)
394
401
  self.dropout = nn.Dropout(p=drop_prob)
395
402
 
@@ -75,9 +75,6 @@ class FBMSNet(EEGModuleMixin, nn.Module):
75
75
  Maximum norm constraint for the convolutional layers.
76
76
  linear_max_norm : float, default=0.5
77
77
  Maximum norm constraint for the linear layers.
78
- return_features : bool, default=False
79
- If True, the forward method returns the class logits and the flattened
80
- features before the final classification layer.
81
78
  filter_parameters : dict, default=None
82
79
  Dictionary of parameters to use for the FilterBankLayer.
83
80
  If None, a default Chebyshev Type II filter with transition bandwidth of
@@ -119,7 +116,6 @@ class FBMSNet(EEGModuleMixin, nn.Module):
119
116
  linear_max_norm: float = 0.5,
120
117
  verbose: bool = False,
121
118
  filter_parameters: dict[Any, Any] | None = None,
122
- return_features: bool = False,
123
119
  ):
124
120
  super().__init__(
125
121
  n_chans=n_chans,
@@ -141,7 +137,6 @@ class FBMSNet(EEGModuleMixin, nn.Module):
141
137
  self.kernels_weights = kernels_weights
142
138
  self.filter_parameters = filter_parameters or {}
143
139
  self.out_channels_spatial = self.n_filters_spat * self.dilatability
144
- self.return_features = return_features
145
140
 
146
141
  # Checkers
147
142
  if temporal_layer not in _valid_layers:
@@ -228,12 +223,8 @@ class FBMSNet(EEGModuleMixin, nn.Module):
228
223
 
229
224
  Returns
230
225
  -------
231
- torch.Tensor or tuple[torch.Tensor, torch.Tensor]
232
- Output tensor with shape (batch_size, n_outputs). If
233
- ``return_features`` is True, a tuple containing the output tensor
234
- and flattened features with shape
235
- (batch_size, out_channels_spatial * stride_factor) is returned.
236
- In TorchScript mode, only the output tensor is returned.
226
+ torch.Tensor
227
+ Output tensor with shape (batch_size, n_outputs).
237
228
  """
238
229
  batch, _, _ = x.shape
239
230
 
@@ -262,16 +253,12 @@ class FBMSNet(EEGModuleMixin, nn.Module):
262
253
  # shape: (batch, self.out_channels_spatial, self.stride_factor, 1)
263
254
 
264
255
  # Flatten and classify
265
- features = self.flatten_layer(x)
256
+ x = self.flatten_layer(x)
266
257
  # shape: (batch, self.out_channels_spatial*self.stride_factor)
267
258
 
268
- logits = self.final_layer(features)
259
+ x = self.final_layer(x)
269
260
  # shape: (batch, n_outputs)
270
- if torch.jit.is_scripting() or torch.jit.is_tracing():
271
- return logits
272
- if self.return_features:
273
- return logits, features
274
- return logits
261
+ return x
275
262
 
276
263
 
277
264
  class _MixedConv2d(nn.Module):
@@ -6,6 +6,7 @@
6
6
 
7
7
  """Medformer: A Multi-Granularity Patching Transformer for Medical Time-Series Classification."""
8
8
 
9
+ import math
9
10
  from math import sqrt
10
11
  from typing import List, Optional, Tuple
11
12
 
@@ -13,7 +14,6 @@ import numpy as np
13
14
  import torch
14
15
  import torch.nn as nn
15
16
 
16
- from braindecode.functional import sinusoidal_positional_encoding
17
17
  from braindecode.models.base import EEGModuleMixin
18
18
 
19
19
 
@@ -329,10 +329,28 @@ class MEDFormer(EEGModuleMixin, nn.Module):
329
329
  class _PositionalEmbedding(nn.Module):
330
330
  def __init__(self, d_model: int, max_len: int = 5000):
331
331
  super().__init__()
332
+ # If d_model is odd, temporarily work with d_model + 1.
333
+ if d_model % 2 == 1:
334
+ d_model_adj = d_model + 1
335
+ else:
336
+ d_model_adj = d_model
332
337
  self.d_model = d_model # store the original dimension
333
- # Odd d_model is handled inside the shared primitive (computed on the
334
- # next even width and truncated), so no manual padding is needed here.
335
- pe = sinusoidal_positional_encoding(max_len, d_model).unsqueeze(0)
338
+
339
+ # Create a pe tensor of size (max_len, d_model_adj)
340
+ pe = torch.zeros(max_len, d_model_adj).float()
341
+ pe.requires_grad = False
342
+
343
+ # Compute the sinusoidal factors.
344
+ position = torch.arange(0, max_len).float().unsqueeze(1)
345
+ # Use d_model_adj in the denominator so that the frequencies are computed over an even number.
346
+ div_term = torch.exp(
347
+ torch.arange(0, d_model_adj, 2).float() * (-math.log(10000.0) / d_model_adj)
348
+ )
349
+ pe[:, 0::2] = torch.sin(position * div_term)
350
+ pe[:, 1::2] = torch.cos(position * div_term)
351
+
352
+ # Unsqueeze to shape (1, max_len, d_model_adj)
353
+ pe = pe.unsqueeze(0)
336
354
  self.register_buffer("pe", pe)
337
355
 
338
356
  def forward(self, x: torch.Tensor) -> torch.Tensor:
@@ -9,6 +9,7 @@ Port of Yang et al. (2026), https://github.com/LiuyinYang1101/STEEGFormer
9
9
  from __future__ import annotations
10
10
 
11
11
  import json
12
+ import math
12
13
  import warnings
13
14
  from functools import lru_cache
14
15
 
@@ -17,7 +18,6 @@ from einops import rearrange
17
18
  from einops.layers.torch import Rearrange
18
19
  from torch import nn
19
20
 
20
- from braindecode.functional import sinusoidal_positional_encoding
21
21
  from braindecode.models.base import EEGModuleMixin
22
22
  from braindecode.modules import (
23
23
  DropPath,
@@ -550,7 +550,13 @@ class _TemporalPositionalEncoding(nn.Module):
550
550
  def __init__(self, embed_dim: int, max_len: int = 2048):
551
551
  super().__init__()
552
552
  self.max_len = max_len
553
- pe = sinusoidal_positional_encoding(max_len, embed_dim)
553
+ position = torch.arange(max_len).unsqueeze(1)
554
+ div_term = torch.exp(
555
+ torch.arange(0, embed_dim, 2) * (-math.log(10000.0) / embed_dim)
556
+ )
557
+ pe = torch.zeros(max_len, embed_dim)
558
+ pe[:, 0::2] = torch.sin(position * div_term)
559
+ pe[:, 1::2] = torch.cos(position * div_term)
554
560
  # Non-persistent: deterministic, regenerated identically at init.
555
561
  self.register_buffer("pe", pe, persistent=False)
556
562
 
@@ -1,61 +1,61 @@
1
- Model,Application,Type,Sampling Frequency (Hz),Hyperparameters,#Parameters,get_#Parameters,Categorization,Modality
2
- ATCNet,General,Prediction,250,"n_chans, n_outputs, n_times",113732,"ATCNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Recurrent,Attention/Transformer",EEG
3
- AttentionBaseNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",3692,"AttentionBaseNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer",EEG
4
- BDTCN,Normal Abnormal,Prediction,100,"n_chans, n_outputs, n_times",456502,"BDTCN(n_chans=21, n_outputs=2, n_times=6000, n_blocks=5, n_filters=55, kernel_size=16)","Convolution,Recurrent",EEG
5
- BIOT,"Sleep Staging, Epilepsy",Prediction,200,"n_chans, n_outputs",3183879,"BIOT(n_chans=2, n_outputs=5, n_times=6000)","Foundation Model",EEG
6
- CBraMod,General,"Prediction, Embedding",200,"n_outputs",4924000,"CBraMod(n_outputs=2)","Foundation Model",EEG
7
- CodeBrain,General,"Prediction, Embedding",200,"n_chans, n_outputs, n_times",15238802,"CodeBrain(n_chans=19, n_outputs=2, n_times=6000)","Foundation Model,Attention/Transformer",EEG
8
- ContraWR,Sleep Staging,"Prediction, Embedding",125,"n_chans, n_outputs, sfreq",1160165,"ContraWR(n_chans=2, n_outputs=5, n_times=3750, emb_size=256, sfreq=125)",Convolution,EEG
9
- CTNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",26900,"CTNet(n_chans=22, n_outputs=4, n_times=1000, n_filters_time=8, kernel_size=16, num_heads=2, embed_dim=16)","Convolution,Attention/Transformer",EEG
10
- Deep4Net,General,Prediction,250,"n_chans, n_outputs, n_times",282879,"Deep4Net(n_chans=22, n_outputs=4, n_times=1000)","Convolution",EEG
11
- DeepSleepNet,Sleep Staging,Prediction,256,"n_chans, n_outputs",24744837,"DeepSleepNet(n_chans=1, n_outputs=5, n_times=7680, sfreq=256)","Convolution,Recurrent",EEG
12
- EEGConformer,General,Prediction,250,"n_chans, n_outputs, n_times",789572,"EEGConformer(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer",EEG
13
- EEGPT,General,Prediction,256,"n_chans, n_outputs, n_times",25477635,"EEGPT(n_chans=58, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer",EEG
14
- EEGInceptionERP,"ERP, SSVEP",Prediction,128,"n_chans, n_outputs",14926,"EEGInceptionERP(n_chans=8, n_outputs=2, n_times=128, sfreq=128)","Convolution",EEG
15
- EEGInceptionMI,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",558028,"EEGInceptionMI(n_chans=22, n_outputs=4, n_times=1000, n_convs=5, n_filters=12)","Convolution",EEG
16
- EEGITNet,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times",5212,"EEGITNet(n_chans=22, n_outputs=4, n_times=500)","Convolution,Recurrent",EEG
17
- EEGNet,General,Prediction,128,"n_chans, n_outputs, n_times",2484,"EEGNet(n_chans=22, n_outputs=4, n_times=512)","Convolution",EEG
18
- EEGNeX,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times",55940,"EEGNeX(n_chans=22, n_outputs=4, n_times=500)","Convolution",EEG
19
- EEGSym,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",299218,"EEGSym(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Channel",EEG
20
- EEGMiner,Emotion Recognition,Prediction,128,"n_chans, n_outputs, n_times, sfreq",7572,"EEGMiner(n_chans=62, n_outputs=2, n_times=2560, sfreq=128)","Convolution,Interpretability",EEG
21
- EEGSimpleConv,Motor Imagery,Prediction,80,"n_chans, n_outputs, sfreq",730404,"EEGSimpleConv(n_chans=22, n_outputs=4, n_times=320, sfreq=80)","Convolution",EEG
22
- EEGTCNet,Motor Imagery,Prediction,250,"n_chans, n_outputs",4516,"EEGTCNet(n_chans=22, n_outputs=4, n_times=1000, kern_length=32)","Convolution,Recurrent",EEG
23
- Labram,General,"Prediction, Embedding",200,"n_chans, n_outputs, n_times",5866180,"Labram(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Foundation Model",EEG
24
- MSVTNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",75494," MSVTNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Recurrent,Attention/Transformer",EEG
25
- SCCNet,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times, sfreq",12070,"SCCNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=125)","Convolution",EEG
26
- SignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"n_times, chs_info",3456882,"SignalJEPA(n_times=512, chs_info=Lee2019_MI().get_data(subjects=[1])[1]['0']['1train'].info[""chs""][:62])","Convolution,Channel,Foundation Model",EEG
27
- SignalJEPA_Contextual,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_outputs, n_times, chs_info",3459184,"SignalJEPA_Contextual(n_outputs=2, input_window_seconds=4.19, sfreq=128, chs_info=Lee2019_MI().get_data(subjects=[1])[1]['0']['1train'].info[""chs""][:62])","Convolution,Channel,Foundation Model",EEG
28
- SignalJEPA_PostLocal,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_chans, n_outputs, n_times",16142,"SignalJEPA_PostLocal(n_chans=62, n_outputs=2, input_window_seconds=4.19, sfreq=128)","Convolution,Channel,Foundation Model",EEG
29
- SignalJEPA_PreLocal,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_outputs, n_times, chs_info",16142,"SignalJEPA_PreLocal(n_chans=62, n_outputs=2, input_window_seconds=4.19, sfreq=128)","Convolution,Channel,Foundation Model",EEG
30
- SincShallowNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",21892,"SincShallowNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Interpretability",EEG
31
- ShallowFBCSPNet,General,Prediction,250,"n_chans, n_outputs, n_times",46084,"ShallowFBCSPNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution",EEG
32
- SleepStagerBlanco2020,Sleep Staging,Prediction,100,"n_chans, n_outputs, n_times",2845,"SleepStagerBlanco2020(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution",EEG
33
- SleepStagerChambon2018,Sleep Staging,Prediction,128,"n_chans, n_outputs, n_times, sfreq",5835,"SleepStagerChambon2018(n_chans=2, n_outputs=5, n_times=3840, sfreq=128)","Convolution",EEG
34
- AttnSleep,Sleep Staging,Prediction,100,"n_chans, n_outputs, n_times, sfreq",719925,"AttnSleep(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution, Attention/Transformer",EEG
35
- SPARCNet,Epilepsy,Prediction,200,"n_chans, n_outputs, n_times",1141921,"SPARCNet(n_chans=16, n_outputs=6, n_times=2000, sfreq=200)","Convolution",EEG
36
- SyncNet,"Emotion Recognition, Alcoholism",Prediction,256,"n_chans, n_outputs, n_times",554,"SyncNet(n_chans=62, n_outputs=3, n_times=5120, sfreq=256)","Interpretability",EEG
37
- TSception,Emotion Recognition,Prediction,256,"n_chans, n_outputs, n_times, sfreq",2187206,"TSception(n_chans=62, n_outputs=3, n_times=5120, sfreq=256)","Convolution",EEG
38
- TIDNet,General,Prediction,250,"n_chans, n_outputs, n_times",240404,"TIDNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution",EEG
39
- USleep,Sleep Staging,Prediction,128,"n_chans, n_outputs, n_times, sfreq",2482011,"USleep(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution",EEG
40
- FBCNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",11812,"FCNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank",EEG
41
- FBMSNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",16231,"FBMSNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank",EEG
42
- MetaNeuromotorHand,Handwriting (sEMG),CTC Sequence,2000,"n_chans, n_outputs, n_times, sfreq",1021284,"MetaNeuromotorHand(n_chans=16, n_outputs=100, n_times=32000, sfreq=2000)","Convolution,Attention/Transformer",sEMG
43
- EMG2QwertyNet,Touch typing (sEMG),CTC Sequence,2000,"n_chans, n_outputs, n_times, sfreq",5293315,"EMG2QwertyNet(n_chans=32, n_outputs=99, n_times=8000, sfreq=2000)","Convolution",sEMG
44
- FBLightConvNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",6596,"FBLightConvNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank",EEG
45
- IFNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",9860,"IFNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank",EEG
46
- BrainModule,Speech Decoding,Prediction,250,"n_chans, n_outputs, n_times, sfreq",6186909,"BrainModule(n_chans=64, n_outputs=29, n_times=160, sfreq=1000)","Convolution","EEG, MEG"
47
- PBT,General,Prediction,250,"n_chans, n_outputs, n_times",818948,"PBT(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Foundation Model",EEG
48
- SSTDPN,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",19502,"SSTDPN(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer",EEG
49
- BENDR,General,"Prediction, Embedding",250,"n_chans, n_times, n_outputs",157141049,"BENDR(n_chans=22, n_outputs=4, n_times=1000)","Foundation Model,Convolution",EEG
50
- LUNA,General,"Prediction, Embedding",128,"n_chans, n_times, sfreq, chs_info",7100731,"LUNA(n_chans=22, n_times=512, sfreq=128)","Convolution,Channel,Foundation Model",EEG
51
- MEDFormer,General,Prediction,250,"n_chans, n_outputs, n_times",5313924,"MEDFormer(n_chans=22, n_outputs=4, n_times=1000)","Foundation Model,Convolution",EEG
52
- REVE,General,Prediction,200,"n_outputs, n_times, n_chans",69481476,"REVE(n_times=1000, n_outputs=4, n_chans=19)","Foundation Model,Attention/Transformer",EEG
53
- DGCNN,Emotion Recognition,Prediction,128,"n_chans, n_outputs, n_times, chs_info",1037385,"DGCNN(n_chans=62, n_outputs=4, n_times=128)","Graph Neural Network,Channel",EEG
54
- InterpolatedBENDR,General,"Prediction, Embedding",250,"chs_info, n_outputs, n_times",157143101,"InterpolatedBENDR(chs_info=<user>, n_outputs=4, n_times=1000)","Foundation Model,Convolution,Channel",EEG
55
- InterpolatedBIOT,"Sleep Staging, Epilepsy",Prediction,200,"chs_info, n_outputs, n_times, sfreq",3184101,"InterpolatedBIOT(chs_info=<user>, n_outputs=5, sfreq=200, n_times=6000)","Foundation Model,Channel",EEG
56
- InterpolatedEEGPT,General,Prediction,256,"chs_info, n_outputs, n_times",25323137,"InterpolatedEEGPT(chs_info=<user>, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer,Channel",EEG
57
- InterpolatedLaBraM,General,"Prediction, Embedding",200,"chs_info, n_outputs, n_times",5866196,"InterpolatedLaBraM(chs_info=<user>, n_outputs=4, n_times=1000)","Convolution,Foundation Model,Channel",EEG
58
- InterpolatedSignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"chs_info",3456882,"InterpolatedSignalJEPA(chs_info=<user>)","Convolution,Channel,Foundation Model",EEG
59
- TCFormer,Motor Imagery,Classification,250,"n_chans, n_outputs, n_times",77820,"TCFormer(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer",EEG
60
- EEGDINO,General,Classification,200,"n_chans, n_outputs, n_times",4539698,"EEGDINO(n_chans=19, n_outputs=4, n_times=1000)","Foundation Model,Attention/Transformer",EEG
61
- STEEGFormer,General,Classification,250,"n_chans, n_outputs, n_times",25305604,"STEEGFormer(n_chans=22, n_outputs=4, n_times=1000)","Attention/Transformer,Foundation Model",EEG
1
+ Model,Application,Type,Sampling Frequency (Hz),Hyperparameters,#Parameters,get_#Parameters,Categorization
2
+ ATCNet,General,Prediction,250,"n_chans, n_outputs, n_times",113732,"ATCNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Recurrent,Attention/Transformer"
3
+ AttentionBaseNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",3692,"AttentionBaseNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer"
4
+ BDTCN,Normal Abnormal,Prediction,100,"n_chans, n_outputs, n_times",456502,"BDTCN(n_chans=21, n_outputs=2, n_times=6000, n_blocks=5, n_filters=55, kernel_size=16)","Convolution,Recurrent"
5
+ BIOT,"Sleep Staging, Epilepsy",Prediction,200,"n_chans, n_outputs",3183879,"BIOT(n_chans=2, n_outputs=5, n_times=6000)","Foundation Model"
6
+ CBraMod,General,"Prediction, Embedding",200,"n_outputs",4924000,"CBraMod(n_outputs=2)","Foundation Model"
7
+ CodeBrain,General,"Prediction, Embedding",200,"n_chans, n_outputs, n_times",15238802,"CodeBrain(n_chans=19, n_outputs=2, n_times=6000)","Foundation Model,Attention/Transformer"
8
+ ContraWR,Sleep Staging,"Prediction, Embedding",125,"n_chans, n_outputs, sfreq",1160165,"ContraWR(n_chans=2, n_outputs=5, n_times=3750, emb_size=256, sfreq=125)",Convolution
9
+ CTNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",26900,"CTNet(n_chans=22, n_outputs=4, n_times=1000, n_filters_time=8, kernel_size=16, num_heads=2, embed_dim=16)","Convolution,Attention/Transformer"
10
+ Deep4Net,General,Prediction,250,"n_chans, n_outputs, n_times",282879,"Deep4Net(n_chans=22, n_outputs=4, n_times=1000)","Convolution"
11
+ DeepSleepNet,Sleep Staging,Prediction,256,"n_chans, n_outputs",24744837,"DeepSleepNet(n_chans=1, n_outputs=5, n_times=7680, sfreq=256)","Convolution,Recurrent"
12
+ EEGConformer,General,Prediction,250,"n_chans, n_outputs, n_times",789572,"EEGConformer(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer"
13
+ EEGPT,General,Prediction,256,"n_chans, n_outputs, n_times",25477635,"EEGPT(n_chans=58, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer"
14
+ EEGInceptionERP,"ERP, SSVEP",Prediction,128,"n_chans, n_outputs",14926,"EEGInceptionERP(n_chans=8, n_outputs=2, n_times=128, sfreq=128)","Convolution"
15
+ EEGInceptionMI,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",558028,"EEGInceptionMI(n_chans=22, n_outputs=4, n_times=1000, n_convs=5, n_filters=12)","Convolution"
16
+ EEGITNet,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times",5212,"EEGITNet(n_chans=22, n_outputs=4, n_times=500)","Convolution,Recurrent"
17
+ EEGNet,General,Prediction,128,"n_chans, n_outputs, n_times",2484,"EEGNet(n_chans=22, n_outputs=4, n_times=512)","Convolution"
18
+ EEGNeX,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times",55940,"EEGNeX(n_chans=22, n_outputs=4, n_times=500)","Convolution"
19
+ EEGSym,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",299218,"EEGSym(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Channel"
20
+ EEGMiner,Emotion Recognition,Prediction,128,"n_chans, n_outputs, n_times, sfreq",7572,"EEGMiner(n_chans=62, n_outputs=2, n_times=2560, sfreq=128)","Convolution,Interpretability"
21
+ EEGSimpleConv,Motor Imagery,Prediction,80,"n_chans, n_outputs, sfreq",730404,"EEGSimpleConv(n_chans=22, n_outputs=4, n_times=320, sfreq=80)","Convolution"
22
+ EEGTCNet,Motor Imagery,Prediction,250,"n_chans, n_outputs",4516,"EEGTCNet(n_chans=22, n_outputs=4, n_times=1000, kern_length=32)","Convolution,Recurrent"
23
+ Labram,General,"Prediction, Embedding",200,"n_chans, n_outputs, n_times",5866180,"Labram(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Foundation Model"
24
+ MSVTNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",75494," MSVTNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Recurrent,Attention/Transformer"
25
+ SCCNet,Motor Imagery,Prediction,125,"n_chans, n_outputs, n_times, sfreq",12070,"SCCNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=125)","Convolution"
26
+ SignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"n_times, chs_info",3456882,"SignalJEPA(n_times=512, chs_info=Lee2019_MI().get_data(subjects=[1])[1]['0']['1train'].info[""chs""][:62])","Convolution,Channel,Foundation Model"
27
+ SignalJEPA_Contextual,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_outputs, n_times, chs_info",3459184,"SignalJEPA_Contextual(n_outputs=2, input_window_seconds=4.19, sfreq=128, chs_info=Lee2019_MI().get_data(subjects=[1])[1]['0']['1train'].info[""chs""][:62])","Convolution,Channel,Foundation Model"
28
+ SignalJEPA_PostLocal,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_chans, n_outputs, n_times",16142,"SignalJEPA_PostLocal(n_chans=62, n_outputs=2, input_window_seconds=4.19, sfreq=128)","Convolution,Channel,Foundation Model"
29
+ SignalJEPA_PreLocal,"Motor Imagery, ERP, SSVEP",Prediction,128,"n_outputs, n_times, chs_info",16142,"SignalJEPA_PreLocal(n_chans=62, n_outputs=2, input_window_seconds=4.19, sfreq=128)","Convolution,Channel,Foundation Model"
30
+ SincShallowNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",21892,"SincShallowNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,Interpretability"
31
+ ShallowFBCSPNet,General,Prediction,250,"n_chans, n_outputs, n_times",46084,"ShallowFBCSPNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution"
32
+ SleepStagerBlanco2020,Sleep Staging,Prediction,100,"n_chans, n_outputs, n_times",2845,"SleepStagerBlanco2020(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution"
33
+ SleepStagerChambon2018,Sleep Staging,Prediction,128,"n_chans, n_outputs, n_times, sfreq",5835,"SleepStagerChambon2018(n_chans=2, n_outputs=5, n_times=3840, sfreq=128)","Convolution"
34
+ AttnSleep,Sleep Staging,Prediction,100,"n_chans, n_outputs, n_times, sfreq",719925,"AttnSleep(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution, Attention/Transformer"
35
+ SPARCNet,Epilepsy,Prediction,200,"n_chans, n_outputs, n_times",1141921,"SPARCNet(n_chans=16, n_outputs=6, n_times=2000, sfreq=200)","Convolution"
36
+ SyncNet,"Emotion Recognition, Alcoholism",Prediction,256,"n_chans, n_outputs, n_times",554,"SyncNet(n_chans=62, n_outputs=3, n_times=5120, sfreq=256)","Interpretability"
37
+ TSception,Emotion Recognition,Prediction,256,"n_chans, n_outputs, n_times, sfreq",2187206,"TSception(n_chans=62, n_outputs=3, n_times=5120, sfreq=256)","Convolution"
38
+ TIDNet,General,Prediction,250,"n_chans, n_outputs, n_times",240404,"TIDNet(n_chans=22, n_outputs=4, n_times=1000)","Convolution"
39
+ USleep,Sleep Staging,Prediction,128,"n_chans, n_outputs, n_times, sfreq",2482011,"USleep(n_chans=2, n_outputs=5, n_times=3000, sfreq=100)","Convolution"
40
+ FBCNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",11812,"FCNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank"
41
+ FBMSNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",16231,"FBMSNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank"
42
+ MetaNeuromotorHand,Handwriting (sEMG),CTC Sequence,2000,"n_chans, n_outputs, n_times, sfreq",1021284,"MetaNeuromotorHand(n_chans=16, n_outputs=100, n_times=32000, sfreq=2000)","Convolution,Attention/Transformer"
43
+ EMG2QwertyNet,Touch typing (sEMG),CTC Sequence,2000,"n_chans, n_outputs, n_times, sfreq",5293315,"EMG2QwertyNet(n_chans=32, n_outputs=99, n_times=8000, sfreq=2000)","Convolution"
44
+ FBLightConvNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",6596,"FBLightConvNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank"
45
+ IFNet,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times, sfreq",9860,"IFNet(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Convolution,FilterBank"
46
+ BrainModule,Speech Decoding,Prediction,250,"n_chans, n_outputs, n_times, sfreq",6186909,"BrainModule(n_chans=64, n_outputs=29, n_times=160, sfreq=1000)","Convolution"
47
+ PBT,General,Prediction,250,"n_chans, n_outputs, n_times",818948,"PBT(n_chans=22, n_outputs=4, n_times=1000, sfreq=250)","Foundation Model"
48
+ SSTDPN,Motor Imagery,Prediction,250,"n_chans, n_outputs, n_times",19502,"SSTDPN(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer"
49
+ BENDR,General,"Prediction, Embedding",250,"n_chans, n_times, n_outputs",157141049,"BENDR(n_chans=22, n_outputs=4, n_times=1000)","Foundation Model,Convolution"
50
+ LUNA,General,"Prediction, Embedding",128,"n_chans, n_times, sfreq, chs_info",7100731,"LUNA(n_chans=22, n_times=512, sfreq=128)","Convolution,Channel,Foundation Model"
51
+ MEDFormer,General,Prediction,250,"n_chans, n_outputs, n_times",5313924,"MEDFormer(n_chans=22, n_outputs=4, n_times=1000)","Foundation Model,Convolution"
52
+ REVE,General,Prediction,200,"n_outputs, n_times, n_chans",69481476,"REVE(n_times=1000, n_outputs=4, n_chans=19)","Foundation Model,Attention/Transformer"
53
+ DGCNN,Emotion Recognition,Prediction,128,"n_chans, n_outputs, n_times, chs_info",1037385,"DGCNN(n_chans=62, n_outputs=4, n_times=128)","Graph Neural Network,Channel"
54
+ InterpolatedBENDR,General,"Prediction, Embedding",250,"chs_info, n_outputs, n_times",157143101,"InterpolatedBENDR(chs_info=<user>, n_outputs=4, n_times=1000)","Foundation Model,Convolution,Channel"
55
+ InterpolatedBIOT,"Sleep Staging, Epilepsy",Prediction,200,"chs_info, n_outputs, n_times, sfreq",3184101,"InterpolatedBIOT(chs_info=<user>, n_outputs=5, sfreq=200, n_times=6000)","Foundation Model,Channel"
56
+ InterpolatedEEGPT,General,Prediction,256,"chs_info, n_outputs, n_times",25323137,"InterpolatedEEGPT(chs_info=<user>, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer,Channel"
57
+ InterpolatedLaBraM,General,"Prediction, Embedding",200,"chs_info, n_outputs, n_times",5866196,"InterpolatedLaBraM(chs_info=<user>, n_outputs=4, n_times=1000)","Convolution,Foundation Model,Channel"
58
+ InterpolatedSignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"chs_info",3456882,"InterpolatedSignalJEPA(chs_info=<user>)","Convolution,Channel,Foundation Model"
59
+ TCFormer,Motor Imagery,Classification,250,"n_chans, n_outputs, n_times",77820,"TCFormer(n_chans=22, n_outputs=4, n_times=1000)","Convolution,Attention/Transformer"
60
+ EEGDINO,General,Classification,200,"n_chans, n_outputs, n_times",4539698,"EEGDINO(n_chans=19, n_outputs=4, n_times=1000)","Foundation Model,Attention/Transformer"
61
+ STEEGFormer,General,Classification,250,"n_chans, n_outputs, n_times",25305604,"STEEGFormer(n_chans=22, n_outputs=4, n_times=1000)","Attention/Transformer,Foundation Model"
@@ -1,4 +1,4 @@
1
- from .activation import GatedLinearUnit, LogActivation, SafeLog, Square
1
+ from .activation import LogActivation, SafeLog, Square
2
2
  from .attention import (
3
3
  CAT,
4
4
  CBAM,
@@ -50,7 +50,6 @@ from .util import aggregate_probas
50
50
  from .wrapper import Expression, IntermediateOutputWrapper
51
51
 
52
52
  __all__ = [
53
- "GatedLinearUnit",
54
53
  "LogActivation",
55
54
  "SafeLog",
56
55
  "Square",
@@ -104,37 +104,3 @@ class LogActivation(nn.Module):
104
104
 
105
105
  def forward(self, x: torch.Tensor) -> torch.Tensor:
106
106
  return torch.log(x + self.epsilon) # Adding epsilon to prevent log(0)
107
-
108
-
109
- class GatedLinearUnit(nn.Module):
110
- r"""Generalized gated linear unit (GLU family).
111
-
112
- Splits the last dimension in half into a ``value`` and a ``gate`` and
113
- returns :math:`\text{value} \otimes \text{activation}(\text{gate})`. With the
114
- default ``activation=nn.GELU`` this is **GEGLU** (Shazeer, 2020); ``nn.SiLU``
115
- gives SwiGLU and ``nn.Sigmoid`` the original GLU. Unlike
116
- :class:`torch.nn.GLU`, the gate nonlinearity is configurable (``torch.nn.GLU``
117
- is hard-wired to the sigmoid).
118
-
119
- Parameters
120
- ----------
121
- activation : type[nn.Module], default=nn.GELU
122
- Constructor of the gate activation. The default yields GEGLU.
123
-
124
- Examples
125
- --------
126
- >>> import torch
127
- >>> from braindecode.modules import GatedLinearUnit
128
- >>> module = GatedLinearUnit()
129
- >>> outputs = module(torch.randn(2, 10, 16))
130
- >>> outputs.shape
131
- torch.Size([2, 10, 8])
132
- """
133
-
134
- def __init__(self, activation: type[nn.Module] = nn.GELU):
135
- super().__init__()
136
- self.activation = activation()
137
-
138
- def forward(self, x: Tensor) -> Tensor:
139
- value, gate = x.chunk(2, dim=-1)
140
- return value * self.activation(gate)
@@ -0,0 +1 @@
1
+ __version__ = "1.6.1.dev171935310"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.6.1.dev169782001
3
+ Version: 1.6.1.dev171935310
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>
@@ -215,7 +215,6 @@ stability.
215
215
  :template: class_in_subdir
216
216
  :recursive:
217
217
 
218
- GatedLinearUnit
219
218
  LogActivation
220
219
  SafeLog
221
220
 
@@ -417,7 +416,6 @@ The functional module contains various functions that can be used like functiona
417
416
  plv_time
418
417
  rescale_parameter
419
418
  safe_log
420
- sinusoidal_positional_encoding
421
419
  square
422
420
 
423
421
  **********
@@ -1,5 +1,3 @@
1
- # Authors: Fashad Ahmed <fashad.ahmed20@gmail.com>
2
- #
3
1
  """Our local Sphinx configuration file."""
4
2
 
5
3
  #!/usr/bin/env python3
@@ -284,17 +282,6 @@ intersphinx_mapping = {
284
282
  "spd_learn": ("https://spdlearn.org/", None),
285
283
  }
286
284
 
287
- if release.endswith("dev0"):
288
- _pip_install_cell = (
289
- "# Install the development version of braindecode\n"
290
- "%pip install git+https://github.com/braindecode/braindecode.git"
291
- )
292
- else:
293
- _pip_install_cell = (
294
- f"# Install braindecode (pinned to the version used to build this notebook)\n"
295
- f"%pip install braindecode=={release}"
296
- )
297
-
298
285
  sphinx_gallery_conf = {
299
286
  "examples_dirs": ["../examples"],
300
287
  "gallery_dirs": ["auto_examples"],
@@ -302,7 +289,6 @@ sphinx_gallery_conf = {
302
289
  "backreferences_dir": "generated",
303
290
  "show_memory": True,
304
291
  "reference_url": dict(braindecode=None),
305
- "first_notebook_cell": _pip_install_cell,
306
292
  "subsection_order": ExplicitOrder(
307
293
  [
308
294
  "../examples/model_building",
@@ -45,9 +45,6 @@ Columns definitions:
45
45
  - **Application**: The application(s) the model is typically used for (e.g., Motor
46
46
  Imagery, P300, Sleep Staging). 'General' indicates applicability across multiple
47
47
  applications or no specific application focus.
48
- - **Modality**: The recording modality (bio-signal type) the model is designed and
49
- validated for, e.g. EEG, MEG, or sEMG. Most Braindecode models target EEG; a few
50
- support more than one modality (e.g. EEG, MEG).
51
48
  - **Type**: The model's output interface. ``Prediction`` indicates a supervised head
52
49
  that can be used for classification or regression, depending on the wrapper, loss,
53
50
  and target. ``Embedding`` indicates a model that exposes an embedding
@@ -156,7 +153,7 @@ Braindecode.
156
153
  }
157
154
 
158
155
  /* --- DataTable: panes hidden until button click ---------------------- */
159
- var FILTER_COLS = [1,2,3,4]; // Application, Modality, Type, Categorization
156
+ var FILTER_COLS = [1,2,3,4]; // Paradigm, Type, Categorization, Hyperparameters
160
157
  var table = $('.sortable').DataTable({
161
158
  dom: 'Blfrtip', // B = Buttons (no 'P' here)
162
159
  paging: false,
@@ -28,20 +28,6 @@ Current 1.6.1 (GitHub)
28
28
  Enhancements
29
29
  ============
30
30
 
31
- - Pin the ``%pip install braindecode`` cell in generated notebooks to the
32
- version used to build them (``braindecode==X.Y.Z`` for stable releases,
33
- ``git+https://github.com/braindecode/braindecode.git`` for dev builds),
34
- so notebooks can be reproduced with a matching installation.
35
- (:gh:`1080` by `Fashad Ahmed`_)
36
- - Add :func:`braindecode.functional.sinusoidal_positional_encoding`, a shared
37
- sine/cosine positional-encoding primitive (handling odd dimensions), and reuse
38
- it in :class:`braindecode.models.BIOT`, :class:`braindecode.models.MEDFormer`,
39
- and :class:`braindecode.models.STEEGFormer` instead of re-deriving the table in
40
- each. Encodings are bit-identical, so model behavior is unchanged. Also add
41
- :class:`braindecode.modules.GatedLinearUnit`, a configurable GLU-family gate
42
- (GEGLU with the default ``nn.GELU``, SwiGLU with ``nn.SiLU``; ``torch.nn.GLU``
43
- is hard-wired to the sigmoid) for building gated transformer feed-forwards.
44
- (:gh:`1078` by `Bruno Aristimunha`_)
45
31
  - Add an optional spatial Fourier :class:`braindecode.modules.ChannelMerger`
46
32
  (with :class:`braindecode.modules.FourierEmb`) to
47
33
  :class:`braindecode.models.BrainModule` via ``use_merger=True``, implementing
@@ -64,9 +50,6 @@ Enhancements
64
50
  - Clarify the model summary table's ``Type`` column by using ``Prediction`` for
65
51
  supervised heads instead of describing them as classification-only.
66
52
  By `Sarthak Tayal`_.
67
- - Add a ``Modality`` column (EEG, MEG, sEMG, ...) to the model summary table so
68
- models can be filtered by the bio-signal they target, and validate it against a
69
- controlled vocabulary. By `Bhargav Kowshik`_.
70
53
  - Add :class:`braindecode.models.InterpolatedEEGPT`, a channel-interpolation
71
54
  variant of :class:`braindecode.models.EEGPT` built with
72
55
  :func:`~braindecode.models.interpolated.InterpolatedModel`.
@@ -92,11 +75,6 @@ Enhancements
92
75
  grouped-query attention Transformer with rotary positional embeddings, and a
93
76
  grouped temporal convolutional network head. (:gh:`1065` by `Bruno
94
77
  Aristimunha`_)
95
- - Add a ``return_features`` option to :class:`braindecode.models.FBMSNet`: when
96
- enabled, ``forward()`` returns ``(logits, features)`` where ``features`` is
97
- the flattened pre-classifier vector (shape ``(batch, out_channels_spatial *
98
- stride_factor)``), enabling center-loss training without subclassing.
99
- (:gh:`1083` by `Bruno Aristimunha`_)
100
78
  - Add an ``n_augmentation`` argument to
101
79
  :class:`braindecode.augmentation.AugmentedDataLoader` for fixed set-expansion:
102
80
  each batch keeps its clean originals and appends ``n_augmentation``
@@ -1 +0,0 @@
1
- __version__ = "1.6.1.dev169782001"