Note
Click here to download the full example code
Benchmarking on MOABB with Braindecode (PyTorch) deep net architectures#
This example shows how to use MOABB to benchmark a set of Braindecode pipelines (deep learning architectures) on all available datasets. For this example, we will use only 2 datasets to keep the computation time low, but this benchmark is designed to easily scale to many datasets.
# Authors: Igor Carrara <igor.carrara@inria.fr>
# Bruno Aristimunha <b.aristimunha@gmail.com>
# Sylvain Chevallier <sylvain.chevallier@universite-paris-saclay.fr>
#
# License: BSD (3-clause)
import os
import matplotlib.pyplot as plt
import torch
from absl.logging import ERROR, set_verbosity
from moabb import benchmark, set_log_level
from moabb.analysis.plotting import score_plot
from moabb.datasets import BNCI2014_001, BNCI2014_004
from moabb.utils import setup_seed
set_log_level("info")
# Avoid output Warning
set_verbosity(ERROR)
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
# Print Information PyTorch
print(f"Torch Version: {torch.__version__}")
# Set up GPU if it is there
cuda = torch.cuda.is_available()
device = "cuda" if cuda else "cpu"
print("GPU is", "AVAILABLE" if cuda else "NOT AVAILABLE")
Torch Version: 1.13.1+cu117
GPU is NOT AVAILABLE
In this example, we will use only 2 subjects from the dataset BNCI2014_001
and BNCI2014_004
.
Running the benchmark#
The benchmark is run using the benchmark
function. You need to specify the
folder containing the pipelines, the kind of evaluation, and the paradigm
to use. By default, the benchmark will use all available datasets for all
paradigms listed in the pipelines. You could restrict to specific evaluation and
paradigm using the evaluations
and paradigms
arguments.
To save computation time, the results are cached. If you want to re-run the
benchmark, you can set the overwrite
argument to True
.
It is possible to indicate the folder to cache the results and the one to save
the analysis & figures. By default, the results are saved in the results
folder, and the analysis & figures are saved in the benchmark
folder.
This code is implemented to run on CPU. If you’re using a GPU, do not use multithreading (i.e. set n_jobs=1)
In order to allow the benchmark function to work with return_epoch=True (Required to use Braindecode( we need to call each pipeline as “braindecode_xxx…”, with xxx the name of the model to be handled correctly by the benchmark function.
# Set up reproducibility of Tensorflow
setup_seed(42)
# Restrict this example only to the first two subjects of BNCI2014_001
dataset = BNCI2014_001()
dataset2 = BNCI2014_004()
dataset.subject_list = dataset.subject_list[:2]
dataset2.subject_list = dataset2.subject_list[:2]
datasets = [dataset, dataset2]
results = benchmark(
pipelines="./pipelines_braindecode",
evaluations=["CrossSession"],
paradigms=["LeftRightImagery"],
include_datasets=datasets,
results="./results/",
overwrite=False,
plot=False,
output="./benchmark/",
n_jobs=-1,
)
BNCI2014-001-CrossSession: 0%| | 0/2 [00:00<?, ?it/s]/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5312 0.7440 0.4828 0.6959 0.1233
2 0.5781 0.7092 0.4828 0.6957 0.1042
3 0.4531 0.8078 0.4828 0.6956 0.1438
4 0.4844 0.7696 0.5172 0.6954 0.1070
5 0.5156 0.7833 0.5172 0.6952 0.1045
6 0.5312 0.7792 0.5172 0.6951 0.1012
7 0.4688 0.7699 0.5172 0.6949 0.1028
8 0.4531 0.8193 0.4828 0.6948 0.1035
9 0.5000 0.7627 0.4828 0.6947 0.1042
10 0.5156 0.7753 0.5172 0.6945 0.1003
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5312 0.7141 0.5172 0.6927 0.1005
2 0.5625 0.6991 0.5172 0.6927 0.0984
3 0.5469 0.6984 0.5172 0.6926 0.1040
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4688 1.0016 0.6207 0.8760 0.2864
2 0.5625 0.8505 0.6552 0.8477 0.3148
3 0.5469 0.8440 0.6552 0.8193 0.2780
4 0.5000 0.8255 0.6552 0.7968 0.2806
5 0.5469 0.8237 0.6207 0.7790 0.2852
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4688 0.8559 0.4828 0.8583 0.2790
2 0.5781 0.7779 0.4828 0.8403 0.2770
3 0.5312 0.8197 0.4828 0.8307 0.3058
4 0.6250 0.8111 0.4828 0.8141 0.2776
5 0.5000 0.7999 0.5172 0.8029 0.2775
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/torch/nn/modules/conv.py:459: UserWarning: Using padding='same' with even kernel lengths and odd dilation may require a zero-padded copy of the input be created (Triggered internally at ../aten/src/ATen/native/Convolution.cpp:895.)
return F.conv2d(input, weight, bias, self.stride,
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5156 1.0825 0.4483 0.6958 0.6432
2 0.4062 0.9912 0.4483 0.6960 0.5799
3 0.4688 1.0518 0.4483 0.6962 0.5702
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5156 0.9333 0.5172 0.6946 0.5726
2 0.4531 0.9715 0.5172 0.6946 0.5455
3 0.6250 0.7161 0.5172 0.6947 0.5686
Stopping since valid_loss has not improved in the last 3 epochs.
BNCI2014-001-CrossSession: 50%|##### | 1/2 [00:16<00:16, 16.63s/it]/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 24 events (all good), 2 – 6 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 12
'right_hand': 12>
warn(f"warnEpochs {epochs}")
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5312 0.7247 0.4483 0.7085 0.0898
2 0.6094 0.6692 0.4483 0.7075 0.0898
3 0.5781 0.6879 0.4828 0.7066 0.0885
4 0.6094 0.6776 0.4828 0.7059 0.1180
5 0.5156 0.7349 0.4828 0.7054 0.0992
6 0.4844 0.6735 0.4828 0.7050 0.0887
7 0.5938 0.7357 0.4828 0.7046 0.0886
8 0.5625 0.6769 0.4828 0.7043 0.0884
9 0.5312 0.6791 0.4828 0.7039 0.0887
10 0.5156 0.6844 0.4828 0.7036 0.0889
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4219 0.7264 0.4138 0.6953 0.0892
2 0.4062 0.7661 0.4138 0.6952 0.0884
3 0.3750 0.7721 0.4138 0.6951 0.0887
4 0.4531 0.7326 0.4138 0.6951 0.0887
5 0.4844 0.7092 0.4138 0.6950 0.0880
6 0.5781 0.6928 0.4138 0.6949 0.0958
7 0.5000 0.7326 0.4138 0.6949 0.1210
8 0.4531 0.7224 0.4138 0.6948 0.0886
9 0.3594 0.7523 0.4138 0.6948 0.0884
10 0.3906 0.7634 0.4138 0.6947 0.0883
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4688 1.1203 0.5517 0.9400 0.3091
2 0.5312 1.2005 0.5172 0.8915 0.2758
3 0.5938 0.8234 0.5172 0.8701 0.2754
4 0.5312 0.9792 0.5517 0.8677 0.2758
5 0.4688 0.9072 0.5517 0.8730 0.3134
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5625 0.8195 0.4828 0.8929 0.2763
2 0.4531 1.0304 0.5172 0.8702 0.2761
3 0.5312 0.8150 0.4828 0.8508 0.3151
4 0.4219 0.9942 0.4138 0.8360 0.2757
5 0.6406 0.6974 0.4138 0.8246 0.2758
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.6094 0.7741 0.5172 0.7113 0.5557
2 0.5469 0.8092 0.5172 0.7096 0.5671
3 0.5938 0.7726 0.5172 0.7083 0.5481
4 0.5625 0.8110 0.5172 0.7074 0.5698
5 0.5156 0.9137 0.5172 0.7065 0.5465
6 0.5156 0.8165 0.5172 0.7054 0.5494
7 0.4375 0.8094 0.5172 0.7046 0.5476
8 0.4844 0.8704 0.5172 0.7039 0.5559
9 0.5156 0.8283 0.5172 0.7032 0.5700
10 0.4688 0.8698 0.5172 0.7027 0.5700
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4688 0.9962 0.5172 0.6789 0.5754
2 0.4531 0.9585 0.5517 0.6791 0.5597
3 0.4531 0.9933 0.5517 0.6793 0.5864
Stopping since valid_loss has not improved in the last 3 epochs.
BNCI2014-001-CrossSession: 100%|##########| 2/2 [00:36<00:00, 18.51s/it]
BNCI2014-001-CrossSession: 100%|##########| 2/2 [00:36<00:00, 18.23s/it]
BNCI2014-004-CrossSession: 0%| | 0/2 [00:00<?, ?it/s]/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host 'lampx.tugraz.at'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
warnings.warn(
0%| | 0.00/34.2M [00:00<?, ?B/s]
0%| | 8.19k/34.2M [00:00<07:18, 77.9kB/s]
0%| | 32.8k/34.2M [00:00<03:23, 168kB/s]
0%| | 96.3k/34.2M [00:00<01:33, 364kB/s]
1%|▏ | 209k/34.2M [00:00<00:53, 638kB/s]
1%|▍ | 432k/34.2M [00:00<00:29, 1.16MB/s]
3%|▉ | 889k/34.2M [00:00<00:14, 2.23MB/s]
5%|█▉ | 1.80M/34.2M [00:00<00:07, 4.29MB/s]
11%|███▉ | 3.62M/34.2M [00:00<00:03, 8.38MB/s]
21%|███████▊ | 7.27M/34.2M [00:00<00:01, 16.5MB/s]
33%|████████████▎ | 11.3M/34.2M [00:01<00:01, 22.0MB/s]
45%|████████████████▌ | 15.3M/34.2M [00:01<00:00, 26.3MB/s]
56%|████████████████████▌ | 19.0M/34.2M [00:01<00:00, 28.9MB/s]
67%|████████████████████████▋ | 22.8M/34.2M [00:01<00:00, 30.8MB/s]
77%|████████████████████████████▌ | 26.4M/34.2M [00:01<00:00, 31.9MB/s]
89%|████████████████████████████████▊ | 30.3M/34.2M [00:01<00:00, 32.9MB/s]
99%|████████████████████████████████████▋| 33.9M/34.2M [00:01<00:00, 33.2MB/s]
0%| | 0.00/34.2M [00:00<?, ?B/s]
100%|██████████████████████████████████████| 34.2M/34.2M [00:00<00:00, 148GB/s]
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host 'lampx.tugraz.at'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
warnings.warn(
0%| | 0.00/18.6M [00:00<?, ?B/s]
0%| | 8.19k/18.6M [00:00<03:57, 78.2kB/s]
0%| | 32.8k/18.6M [00:00<01:49, 169kB/s]
1%|▏ | 96.3k/18.6M [00:00<00:50, 366kB/s]
1%|▍ | 209k/18.6M [00:00<00:28, 641kB/s]
2%|▉ | 432k/18.6M [00:00<00:15, 1.17MB/s]
5%|█▊ | 889k/18.6M [00:00<00:07, 2.23MB/s]
10%|███▌ | 1.79M/18.6M [00:00<00:03, 4.29MB/s]
19%|███████▏ | 3.61M/18.6M [00:00<00:01, 8.37MB/s]
38%|█████████████▉ | 7.03M/18.6M [00:00<00:00, 15.6MB/s]
59%|█████████████████████▊ | 11.0M/18.6M [00:01<00:00, 21.4MB/s]
80%|█████████████████████████████▋ | 14.9M/18.6M [00:01<00:00, 26.1MB/s]
0%| | 0.00/18.6M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 18.6M/18.6M [00:00<00:00, 73.2GB/s]
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 120 events (all good), 3 – 7.5 s (baseline off), ~3.1 MB, data loaded,
'left_hand': 60
'right_hand': 60>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 120 events (all good), 3 – 7.5 s (baseline off), ~3.1 MB, data loaded,
'left_hand': 60
'right_hand': 60>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 160 events (all good), 3 – 7.5 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 80
'right_hand': 80>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 160 events (all good), 3 – 7.5 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 80
'right_hand': 80>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 160 events (all good), 3 – 7.5 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 80
'right_hand': 80>
warn(f"warnEpochs {epochs}")
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4732 0.7339 0.4917 0.6930 0.1917
2 0.5469 0.7075 0.4667 0.6930 0.1857
3 0.5223 0.7088 0.4833 0.6930 0.1853
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5045 0.7473 0.5250 0.6942 0.2295
2 0.4754 0.7517 0.4833 0.6941 0.1865
3 0.4554 0.7572 0.4833 0.6941 0.1869
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5491 0.7299 0.4643 0.6926 0.1859
2 0.4688 0.7390 0.5179 0.6926 0.1837
3 0.4933 0.7312 0.5268 0.6925 0.1841
4 0.4821 0.7498 0.5625 0.6925 0.2199
5 0.4487 0.7508 0.5625 0.6924 0.1840
6 0.5290 0.7161 0.5446 0.6924 0.1851
7 0.5045 0.7257 0.5357 0.6923 0.1845
8 0.5089 0.7148 0.5357 0.6922 0.1839
9 0.5045 0.7190 0.5357 0.6921 0.1842
10 0.5156 0.7155 0.5357 0.6919 0.2174
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4911 0.7371 0.5357 0.6922 0.1847
2 0.5268 0.7158 0.5268 0.6921 0.1848
3 0.5089 0.7168 0.5357 0.6919 0.2030
4 0.5357 0.7066 0.5625 0.6917 0.1999
5 0.5335 0.7055 0.5714 0.6915 0.1837
6 0.5312 0.7046 0.5804 0.6913 0.1843
7 0.5469 0.6967 0.5982 0.6911 0.1835
8 0.5469 0.7024 0.5982 0.6908 0.1831
9 0.5335 0.7170 0.5714 0.6906 0.2141
10 0.5446 0.6946 0.5536 0.6903 0.1885
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4821 0.7423 0.5268 0.6928 0.1855
2 0.5246 0.7141 0.5000 0.6928 0.1849
3 0.4821 0.7584 0.5357 0.6927 0.2238
4 0.4888 0.7273 0.5357 0.6927 0.1840
5 0.5335 0.7273 0.5268 0.6927 0.1847
6 0.5536 0.6918 0.5179 0.6927 0.1840
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5424 0.8363 0.4167 0.8805 0.7599
2 0.5647 0.8550 0.4250 0.8419 0.7827
3 0.5603 0.8313 0.4583 0.8160 0.7919
4 0.5915 0.7809 0.5083 0.7795 0.7472
5 0.6540 0.7099 0.5083 0.7588 0.7863
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5179 0.9635 0.5917 0.7994 0.7784
2 0.5692 0.8389 0.6250 0.6530 0.7797
3 0.5469 0.8068 0.6500 0.6450 0.7466
4 0.5670 0.7781 0.6583 0.6177 0.7778
5 0.6339 0.7124 0.7167 0.5973 0.7849
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4844 0.9286 0.5446 0.8004 0.7455
2 0.5223 0.8681 0.5179 0.8059 0.7828
3 0.5268 0.8717 0.5446 0.7327 0.7777
4 0.5335 0.8368 0.5625 0.7108 0.7787
5 0.5580 0.8279 0.5982 0.6876 0.7495
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4978 0.9140 0.5446 0.7616 0.7812
2 0.5312 0.8671 0.5357 0.7596 0.7821
3 0.5647 0.8008 0.5625 0.7156 0.7445
4 0.5982 0.7770 0.5804 0.6775 0.7806
5 0.6161 0.7037 0.5804 0.6538 0.7793
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5223 0.9322 0.4196 0.8339 0.7816
2 0.5179 0.8492 0.4732 0.8054 0.7440
3 0.5134 0.8634 0.5357 0.7775 0.7831
4 0.5625 0.8265 0.5446 0.7456 0.7818
5 0.5625 0.7713 0.5536 0.7193 0.7436
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4799 0.9765 0.4667 0.6954 1.0675
2 0.4665 1.0116 0.5000 0.6948 1.0519
3 0.4888 0.9643 0.5250 0.6942 1.0631
4 0.4799 0.9760 0.5417 0.6935 1.0753
5 0.4866 1.0164 0.5250 0.6931 1.0505
6 0.5022 0.9623 0.5250 0.6927 1.0585
7 0.4933 0.9448 0.5333 0.6923 1.0725
8 0.4911 0.9434 0.5250 0.6920 1.0597
9 0.5268 0.9233 0.5583 0.6917 1.0540
10 0.5625 0.8643 0.5583 0.6913 1.0690
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5513 0.8732 0.5000 0.6994 1.0687
2 0.4844 0.9683 0.5000 0.7027 1.0609
3 0.5089 0.8962 0.5000 0.7063 1.0738
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5045 0.8851 0.4911 0.7116 1.0678
2 0.5045 0.9617 0.4821 0.7026 1.0619
3 0.4821 0.9930 0.4821 0.6984 1.0496
4 0.5022 0.9836 0.4821 0.6983 1.0576
5 0.5134 0.9065 0.5000 0.7008 1.0851
6 0.5335 0.9326 0.5089 0.7048 1.0504
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4821 1.0222 0.5714 0.6851 1.0608
2 0.4710 1.0642 0.5804 0.6839 1.0532
3 0.5022 0.9694 0.5804 0.6826 1.0674
4 0.5045 0.9584 0.5893 0.6813 1.0711
5 0.5335 0.9050 0.6339 0.6799 1.0508
6 0.4955 0.9233 0.6339 0.6784 1.0676
7 0.5201 0.9482 0.6429 0.6768 1.0653
8 0.4955 0.9969 0.6607 0.6752 1.0681
9 0.4911 0.9816 0.6429 0.6735 1.0566
10 0.5357 0.9279 0.6429 0.6715 1.0727
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5156 0.9157 0.4464 0.6968 1.0550
2 0.5112 1.0146 0.4911 0.6963 1.0697
3 0.5134 0.9010 0.5000 0.6963 1.0610
4 0.4799 0.9201 0.5000 0.6965 1.0513
5 0.4754 0.9639 0.5089 0.6969 1.0621
Stopping since valid_loss has not improved in the last 3 epochs.
BNCI2014-004-CrossSession: 50%|##### | 1/2 [01:16<01:16, 76.79s/it]/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host 'lampx.tugraz.at'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
warnings.warn(
0%| | 0.00/33.1M [00:00<?, ?B/s]
0%| | 8.19k/33.1M [00:00<07:02, 78.3kB/s]
0%| | 32.8k/33.1M [00:00<03:15, 169kB/s]
0%| | 96.3k/33.1M [00:00<01:30, 365kB/s]
1%|▏ | 209k/33.1M [00:00<00:51, 638kB/s]
1%|▍ | 432k/33.1M [00:00<00:28, 1.16MB/s]
3%|█ | 889k/33.1M [00:00<00:14, 2.23MB/s]
5%|██ | 1.80M/33.1M [00:00<00:07, 4.30MB/s]
11%|████ | 3.62M/33.1M [00:00<00:03, 8.39MB/s]
22%|███████▉ | 7.14M/33.1M [00:00<00:01, 15.8MB/s]
34%|████████████▌ | 11.2M/33.1M [00:01<00:00, 21.9MB/s]
45%|████████████████▊ | 15.0M/33.1M [00:01<00:00, 25.9MB/s]
57%|█████████████████████ | 18.8M/33.1M [00:01<00:00, 28.9MB/s]
69%|█████████████████████████▍ | 22.7M/33.1M [00:01<00:00, 31.1MB/s]
80%|█████████████████████████████▊ | 26.6M/33.1M [00:01<00:00, 32.7MB/s]
92%|██████████████████████████████████ | 30.5M/33.1M [00:01<00:00, 33.9MB/s]
0%| | 0.00/33.1M [00:00<?, ?B/s]
100%|██████████████████████████████████████| 33.1M/33.1M [00:00<00:00, 139GB/s]
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host 'lampx.tugraz.at'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
warnings.warn(
0%| | 0.00/16.5M [00:00<?, ?B/s]
0%| | 8.19k/16.5M [00:00<03:31, 78.2kB/s]
0%| | 32.8k/16.5M [00:00<01:37, 169kB/s]
1%|▏ | 96.3k/16.5M [00:00<00:44, 365kB/s]
1%|▍ | 209k/16.5M [00:00<00:25, 641kB/s]
3%|▉ | 432k/16.5M [00:00<00:13, 1.17MB/s]
5%|██ | 889k/16.5M [00:00<00:07, 2.23MB/s]
11%|████ | 1.80M/16.5M [00:00<00:03, 4.31MB/s]
22%|████████ | 3.62M/16.5M [00:00<00:01, 8.41MB/s]
44%|████████████████▎ | 7.27M/16.5M [00:00<00:00, 16.5MB/s]
62%|██████████████████████▊ | 10.2M/16.5M [00:01<00:00, 19.9MB/s]
82%|██████████████████████████████▎ | 13.6M/16.5M [00:01<00:00, 23.4MB/s]
0%| | 0.00/16.5M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 16.5M/16.5M [00:00<00:00, 71.7GB/s]
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 120 events (all good), 3 – 7.5 s (baseline off), ~3.1 MB, data loaded,
'left_hand': 60
'right_hand': 60>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 120 events (all good), 3 – 7.5 s (baseline off), ~3.1 MB, data loaded,
'left_hand': 60
'right_hand': 60>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 160 events (all good), 3 – 7.5 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 80
'right_hand': 80>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 120 events (all good), 3 – 7.5 s (baseline off), ~3.1 MB, data loaded,
'left_hand': 60
'right_hand': 60>
warn(f"warnEpochs {epochs}")
/home/runner/work/moabb/moabb/moabb/datasets/preprocessing.py:279: UserWarning: warnEpochs <Epochs | 160 events (all good), 3 – 7.5 s (baseline off), ~4.1 MB, data loaded,
'left_hand': 80
'right_hand': 80>
warn(f"warnEpochs {epochs}")
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5112 0.7192 0.4911 0.6931 0.1895
2 0.5156 0.7212 0.5000 0.6931 0.1847
3 0.4911 0.7376 0.5357 0.6931 0.1837
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5223 0.7298 0.4375 0.6948 0.1836
2 0.5156 0.7184 0.3929 0.6949 0.1833
3 0.4866 0.7346 0.3839 0.6950 0.1825
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5000 0.7334 0.5096 0.6935 0.1605
2 0.4479 0.7366 0.5096 0.6935 0.1596
3 0.5026 0.7125 0.4712 0.6935 0.1591
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5134 0.7174 0.5000 0.6933 0.1842
2 0.5201 0.6950 0.4911 0.6933 0.1836
3 0.5290 0.7125 0.4732 0.6934 0.1832
Stopping since valid_loss has not improved in the last 3 epochs.
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5052 0.7973 0.5769 0.6924 0.1586
2 0.4948 0.7724 0.5481 0.6924 0.1584
3 0.4844 0.7704 0.5192 0.6923 0.1604
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5089 0.8576 0.5268 0.7897 0.7662
2 0.5424 0.8386 0.5000 0.7480 0.7817
3 0.5536 0.7878 0.5089 0.7392 0.7763
4 0.5692 0.7669 0.5268 0.7294 0.7467
5 0.5647 0.7620 0.5446 0.7208 0.7812
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4821 0.9460 0.4821 0.8991 0.7805
2 0.5022 0.8862 0.5000 0.9395 0.7670
3 0.5268 0.8547 0.4911 0.9094 0.7730
4 0.4888 0.8301 0.4911 0.8383 0.7826
5 0.5469 0.8009 0.4643 0.7856 0.7746
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4714 1.0724 0.5000 3.1059 0.6409
2 0.5052 0.9177 0.4712 1.0043 0.6789
3 0.5078 0.9045 0.5577 0.7772 0.6611
4 0.5339 0.8648 0.5577 0.8271 0.6615
5 0.5156 0.8731 0.5865 0.7894 0.6769
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4732 0.8914 0.5000 1.9157 0.7739
2 0.5201 0.8424 0.5000 1.1605 0.7451
3 0.5246 0.8019 0.4911 0.8539 0.7767
4 0.5179 0.8367 0.5089 0.7683 0.7818
5 0.5246 0.7838 0.5714 0.7247 0.7445
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4896 0.8743 0.5000 1.8263 0.6785
2 0.4922 0.8429 0.5000 1.1927 0.6733
3 0.5677 0.7942 0.5000 0.9444 0.6408
4 0.5339 0.8607 0.5000 0.7996 0.6723
5 0.5573 0.8027 0.4904 0.7565 0.6404
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4777 1.0155 0.4821 0.6978 1.0574
2 0.5290 0.9192 0.4911 0.6995 1.0667
3 0.5067 0.9039 0.5000 0.7013 1.0480
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5022 0.9328 0.4554 0.6913 1.0576
2 0.5067 0.8975 0.4554 0.6913 1.0600
3 0.5112 0.9199 0.4643 0.6912 1.0678
4 0.4665 0.9988 0.4643 0.6911 1.0549
5 0.5268 0.9300 0.4643 0.6909 1.0648
6 0.4665 0.9760 0.4643 0.6908 1.0519
7 0.5134 0.9375 0.4554 0.6906 1.0632
8 0.4911 0.9155 0.4732 0.6903 1.0648
9 0.5022 0.8928 0.4643 0.6901 1.0593
10 0.5290 0.8817 0.4732 0.6899 1.0390
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.5234 0.8935 0.5000 0.6980 0.9229
2 0.5000 0.9576 0.5096 0.6979 0.9047
3 0.5026 0.9772 0.5192 0.6978 0.8965
4 0.5365 0.8889 0.5192 0.6977 0.9174
5 0.5182 0.9519 0.5288 0.6976 0.9447
6 0.4766 0.9553 0.5000 0.6975 0.9054
7 0.5339 0.8655 0.4808 0.6975 0.9163
8 0.5130 0.9143 0.4615 0.6974 0.8884
9 0.5156 0.9060 0.4808 0.6975 0.9111
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4754 0.9890 0.5179 0.6943 1.0499
2 0.5290 0.9091 0.5000 0.6950 1.0561
3 0.4911 1.0011 0.5089 0.6961 1.0601
Stopping since valid_loss has not improved in the last 3 epochs.
/home/runner/work/moabb/moabb/.venv/lib/python3.9/site-packages/braindecode/models/base.py:180: UserWarning: LogSoftmax final layer will be removed! Please adjust your loss function accordingly (e.g. CrossEntropyLoss)!
warnings.warn("LogSoftmax final layer will be removed! " +
epoch train_acc train_loss valid_acc valid_loss dur
------- ----------- ------------ ----------- ------------ ------
1 0.4974 1.0589 0.5000 0.6935 0.8936
2 0.4818 1.0067 0.5096 0.6941 0.9208
3 0.4948 1.0048 0.5096 0.6947 0.9144
Stopping since valid_loss has not improved in the last 3 epochs.
BNCI2014-004-CrossSession: 100%|##########| 2/2 [02:21<00:00, 69.50s/it]
BNCI2014-004-CrossSession: 100%|##########| 2/2 [02:21<00:00, 70.59s/it]
dataset evaluation pipeline avg score
0 BNCI2014-001 CrossSession braindecode_ShallowFBCSPNet 0.566262
1 BNCI2014-001 CrossSession braindecode_EEGInception 0.511960
2 BNCI2014-001 CrossSession braindecode_EEGNetv4_resample 0.510706
3 BNCI2014-004 CrossSession braindecode_ShallowFBCSPNet 0.608260
4 BNCI2014-004 CrossSession braindecode_EEGInception 0.567186
5 BNCI2014-004 CrossSession braindecode_EEGNetv4_resample 0.490026
The deep learning architectures implemented in MOABB using Braindecode are:
Benchmark prints a summary of the results. Detailed results are saved in a
pandas dataframe, and can be used to generate figures. The analysis & figures
are saved in the benchmark
folder.
score_plot(results)
plt.show()
/home/runner/work/moabb/moabb/moabb/analysis/plotting.py:70: UserWarning: The palette list has more values (6) than needed (3), which may not be intended.
sea.stripplot(
References#
- 1(1,2)
Schirrmeister, R. T., Springenberg, J. T., Fiederer, L. D. J., Glasstetter, M., Eggensperger, K., Tangermann, M., … & Ball, T. (2017). Deep learning with convolutional neural networks for EEG decoding and visualization. Human brain mapping, 38(11), 5391-5420.
- 2
Lawhern, V. J., Solon, A. J., Waytowich, N. R., Gordon, S. M., Hung, C. P., & Lance, B. J. (2018). EEGNet: a compact convolutional neural network for EEG-based brain-computer interfaces. Journal of neural engineering, 15(5), 056013.
- 3
Santamaria-Vazquez, E., Martinez-Cagigal, V., Vaquerizo-Villar, F., & Hornero, R. (2020). EEG-inception: A novel deep convolutional neural network for assistive ERP-based brain-computer interfaces. IEEE Transactions on Neural Systems and Rehabilitation Engineering
Total running time of the script: ( 3 minutes 1.117 seconds)
Estimated memory usage: 749 MB