Switch to unified view

a b/brainDecode/deprecated/1 - Two-Classes Classification (BNCI).ipynb
1
{
2
 "cells": [
3
  {
4
   "cell_type": "code",
5
   "execution_count": 25,
6
   "metadata": {
7
    "scrolled": true
8
   },
9
   "outputs": [
10
    {
11
     "name": "stdout",
12
     "output_type": "stream",
13
     "text": [
14
      "(160, 15, 2560)\n",
15
      "(160,)\n"
16
     ]
17
    }
18
   ],
19
   "source": [
20
    "\"\"\"\n",
21
    "Format dataset, we read the file for the desired subject, and parse the data to extract:\n",
22
    "- samplingRate\n",
23
    "- trialLength\n",
24
    "- X, a M x N x K matrix, which stands for trial x chan x samples\n",
25
    "                         the actual values are 160 x 15 x 2560\n",
26
    "- y, a M vector containing the labels {0,1}\n",
27
    "\n",
28
    "ref:\n",
29
    "Dataset description: https://lampx.tugraz.at/~bci/database/002-2014/description.pdf\n",
30
    "\"\"\"\n",
31
    "\n",
32
    "import scipy.io as sio\n",
33
    "import numpy as np\n",
34
    "\n",
35
    "\n",
36
    "# prepare data containers\n",
37
    "y = []\n",
38
    "X = []\n",
39
    "\n",
40
    "\"\"\"\n",
41
    "trainingFileList = [#'BBCIData/S14T.mat', \n",
42
    "                    #'BBCIData/S13T.mat', \n",
43
    "                    #'BBCIData/S12T.mat', \n",
44
    "                    #'BBCIData/S11T.mat', \n",
45
    "                    #'BBCIData/S10T.mat', \n",
46
    "                    #'BBCIData/S09T.mat', \n",
47
    "                    #'BBCIData/S08T.mat', \n",
48
    "                    #'BBCIData/S07T.mat', \n",
49
    "                    #'BBCIData/S06T.mat', \n",
50
    "                    #'BBCIData/S05T.mat', \n",
51
    "                    #'BBCIData/S04T.mat', \n",
52
    "                    #'BBCIData/S03T.mat', \n",
53
    "                    #'BBCIData/S02T.mat', \n",
54
    "                    'BBCIData/S01T.mat']\n",
55
    "\n",
56
    "validationFileList = [#'BBCIData/S14E.mat', \n",
57
    "                      #'BBCIData/S13E.mat', \n",
58
    "                      #'BBCIData/S12E.mat', \n",
59
    "                      #'BBCIData/S11E.mat', \n",
60
    "                      #'BBCIData/S10E.mat', \n",
61
    "                      #'BBCIData/S09E.mat', \n",
62
    "                      #'BBCIData/S08E.mat', \n",
63
    "                      #'BBCIData/S07E.mat', \n",
64
    "                      #'BBCIData/S06E.mat', \n",
65
    "                      #'BBCIData/S05E.mat', \n",
66
    "                      #'BBCIData/S04E.mat', \n",
67
    "                      #'BBCIData/S03E.mat', \n",
68
    "                      #'BBCIData/S02E.mat', \n",
69
    "                      'BBCIData/S01E.mat']\n",
70
    "\"\"\"\n",
71
    "\n",
72
    "trainingFileList = ['BBCIData/S08T.mat']\n",
73
    "\n",
74
    "validationFileList = ['BBCIData/S08E.mat']\n",
75
    "\n",
76
    "for i in range(len(trainingFileList)):\n",
77
    "    # read file\n",
78
    "    d1T = sio.loadmat(trainingFileList[i])\n",
79
    "    d1E = sio.loadmat(validationFileList[i])\n",
80
    "    \n",
81
    "    samplingRate = d1T['data'][0][0][0][0][3][0][0]\n",
82
    "    trialLength = 5*samplingRate\n",
83
    "\n",
84
    "\n",
85
    "    # run through all training runs\n",
86
    "    for run in range(5):\n",
87
    "        y.append(d1T['data'][0][run][0][0][2][0]) # labels\n",
88
    "        timestamps = d1T['data'][0][run][0][0][1][0] # timestamps\n",
89
    "        rawData = d1T['data'][0][run][0][0][0].transpose() # chan x data\n",
90
    "\n",
91
    "        # parse out data based on timestamps\n",
92
    "        for start in timestamps:\n",
93
    "            end = start + trialLength\n",
94
    "            X.append(rawData[:,start:end]) #15 x 2560\n",
95
    "\n",
96
    "\n",
97
    "    # run through all validation runs (we do not discriminate at this point)\n",
98
    "    for run in range(3):\n",
99
    "        y.append(d1E['data'][0][run][0][0][2][0]) # labels\n",
100
    "        timestamps = d1E['data'][0][run][0][0][1][0] # timestamps\n",
101
    "        rawData = d1E['data'][0][run][0][0][0].transpose() # chan x data\n",
102
    "\n",
103
    "        # parse out data based on timestamps\n",
104
    "        for start in timestamps:\n",
105
    "            end = start + trialLength\n",
106
    "            X.append(rawData[:,start:end]) #15 x 2560\n",
107
    "\n",
108
    "    del rawData\n",
109
    "    del d1T\n",
110
    "    del d1E\n",
111
    "\n",
112
    "# arrange data into numpy arrays\n",
113
    "# also torch expect float32 for samples\n",
114
    "# and int64 for labels {0,1}\n",
115
    "X = np.array(X).astype(np.float32)\n",
116
    "y = (np.array(y).flatten()-1).astype(np.int64)\n",
117
    "print(X.shape)\n",
118
    "print(y.shape)\n",
119
    "\n",
120
    "# erase unused references\n",
121
    "d1T = []\n",
122
    "d1E = []\n",
123
    "\n"
124
   ]
125
  },
126
  {
127
   "cell_type": "code",
128
   "execution_count": 26,
129
   "metadata": {},
130
   "outputs": [],
131
   "source": [
132
    "from braindecode.datautil.signal_target import SignalAndTarget\n",
133
    "from braindecode.models.shallow_fbcsp import ShallowFBCSPNet\n",
134
    "from torch import nn\n",
135
    "from braindecode.torch_ext.util import set_random_seeds    \n",
136
    "from torch import optim\n",
137
    "import torch\n",
138
    "\n",
139
    "idx = np.random.permutation(X.shape[0])\n",
140
    "\n",
141
    "X = X[idx,:,:]\n",
142
    "y = y[idx]\n",
143
    "\n",
144
    "#print(X.shape)\n",
145
    "#print(y.shape)\n",
146
    "\n",
147
    "nb_train_trials = int(np.floor(5/8*X.shape[0]))\n",
148
    "\n",
149
    "\n",
150
    "train_set = SignalAndTarget(X[:nb_train_trials], y=y[:nb_train_trials])\n",
151
    "test_set = SignalAndTarget(X[nb_train_trials:], y=y[nb_train_trials:])\n",
152
    "\n",
153
    "#train_set = SignalAndTarget(X[:nb_train_trials], y=y[:nb_train_trials])\n",
154
    "#test_set = SignalAndTarget(X[nb_train_trials:nb_test_trials], y=y[nb_train_trials:nb_test_trials])\n",
155
    "\n",
156
    "# Set if you want to use GPU\n",
157
    "# You can also use torch.cuda.is_available() to determine if cuda is available on your machine.\n",
158
    "cuda = torch.cuda.is_available()\n",
159
    "set_random_seeds(seed=20170629, cuda=cuda)\n",
160
    "n_classes = 2\n",
161
    "in_chans = train_set.X.shape[1]\n",
162
    "# final_conv_length = auto ensures we only get a single output in the time dimension\n",
163
    "model = ShallowFBCSPNet(in_chans=in_chans, n_classes=n_classes,\n",
164
    "                        input_time_length=train_set.X.shape[2],\n",
165
    "                        final_conv_length='auto').create_network()\n",
166
    "if cuda:\n",
167
    "    model.cuda()\n",
168
    "\n",
169
    "optimizer = optim.Adam(model.parameters())\n"
170
   ]
171
  },
172
  {
173
   "cell_type": "code",
174
   "execution_count": 27,
175
   "metadata": {
176
    "scrolled": false
177
   },
178
   "outputs": [
179
    {
180
     "name": "stdout",
181
     "output_type": "stream",
182
     "text": [
183
      "Epoch 0\n",
184
      "Train  Loss: 23.12267\n",
185
      "Train  Accuracy: 51.0%\n",
186
      "Test   Loss: 23.45116\n",
187
      "Test   Accuracy: 46.7%\n",
188
      "Epoch 1\n",
189
      "Train  Loss: 11.42247\n",
190
      "Train  Accuracy: 50.0%\n",
191
      "Test   Loss: 11.18545\n",
192
      "Test   Accuracy: 51.7%\n",
193
      "Epoch 2\n",
194
      "Train  Loss: 6.14801\n",
195
      "Train  Accuracy: 49.0%\n",
196
      "Test   Loss: 5.97394\n",
197
      "Test   Accuracy: 50.0%\n",
198
      "Epoch 3\n",
199
      "Train  Loss: 7.08030\n",
200
      "Train  Accuracy: 51.0%\n",
201
      "Test   Loss: 7.17894\n",
202
      "Test   Accuracy: 46.7%\n",
203
      "Epoch 4\n",
204
      "Train  Loss: 2.78045\n",
205
      "Train  Accuracy: 51.0%\n",
206
      "Test   Loss: 2.80417\n",
207
      "Test   Accuracy: 48.3%\n",
208
      "Epoch 5\n",
209
      "Train  Loss: 3.10231\n",
210
      "Train  Accuracy: 49.0%\n",
211
      "Test   Loss: 3.01706\n",
212
      "Test   Accuracy: 51.7%\n",
213
      "Epoch 6\n",
214
      "Train  Loss: 0.77492\n",
215
      "Train  Accuracy: 59.0%\n",
216
      "Test   Loss: 0.73021\n",
217
      "Test   Accuracy: 55.0%\n",
218
      "Epoch 7\n",
219
      "Train  Loss: 2.08993\n",
220
      "Train  Accuracy: 53.0%\n",
221
      "Test   Loss: 2.06789\n",
222
      "Test   Accuracy: 48.3%\n",
223
      "Epoch 8\n",
224
      "Train  Loss: 0.78730\n",
225
      "Train  Accuracy: 64.0%\n",
226
      "Test   Loss: 0.69451\n",
227
      "Test   Accuracy: 58.3%\n",
228
      "Epoch 9\n",
229
      "Train  Loss: 0.72214\n",
230
      "Train  Accuracy: 65.0%\n",
231
      "Test   Loss: 0.62667\n",
232
      "Test   Accuracy: 58.3%\n",
233
      "Epoch 10\n",
234
      "Train  Loss: 1.04905\n",
235
      "Train  Accuracy: 57.0%\n",
236
      "Test   Loss: 0.94240\n",
237
      "Test   Accuracy: 43.3%\n",
238
      "Epoch 11\n",
239
      "Train  Loss: 1.06353\n",
240
      "Train  Accuracy: 62.0%\n",
241
      "Test   Loss: 0.92665\n",
242
      "Test   Accuracy: 63.3%\n",
243
      "Epoch 12\n",
244
      "Train  Loss: 0.73815\n",
245
      "Train  Accuracy: 67.0%\n",
246
      "Test   Loss: 0.61124\n",
247
      "Test   Accuracy: 60.0%\n",
248
      "Epoch 13\n",
249
      "Train  Loss: 1.21130\n",
250
      "Train  Accuracy: 56.0%\n",
251
      "Test   Loss: 1.06474\n",
252
      "Test   Accuracy: 46.7%\n",
253
      "Epoch 14\n",
254
      "Train  Loss: 0.57069\n",
255
      "Train  Accuracy: 73.0%\n",
256
      "Test   Loss: 0.44313\n",
257
      "Test   Accuracy: 56.7%\n",
258
      "Epoch 15\n",
259
      "Train  Loss: 0.95924\n",
260
      "Train  Accuracy: 62.0%\n",
261
      "Test   Loss: 0.83465\n",
262
      "Test   Accuracy: 58.3%\n",
263
      "Epoch 16\n",
264
      "Train  Loss: 0.61197\n",
265
      "Train  Accuracy: 68.0%\n",
266
      "Test   Loss: 0.45661\n",
267
      "Test   Accuracy: 45.0%\n",
268
      "Epoch 17\n",
269
      "Train  Loss: 0.68676\n",
270
      "Train  Accuracy: 67.0%\n",
271
      "Test   Loss: 0.52255\n",
272
      "Test   Accuracy: 51.7%\n",
273
      "Epoch 18\n",
274
      "Train  Loss: 0.59275\n",
275
      "Train  Accuracy: 71.0%\n",
276
      "Test   Loss: 0.49090\n",
277
      "Test   Accuracy: 61.7%\n",
278
      "Epoch 19\n",
279
      "Train  Loss: 0.46892\n",
280
      "Train  Accuracy: 78.0%\n",
281
      "Test   Loss: 0.37154\n",
282
      "Test   Accuracy: 51.7%\n",
283
      "Epoch 20\n",
284
      "Train  Loss: 0.87564\n",
285
      "Train  Accuracy: 63.0%\n",
286
      "Test   Loss: 0.72043\n",
287
      "Test   Accuracy: 51.7%\n",
288
      "Epoch 21\n",
289
      "Train  Loss: 0.54479\n",
290
      "Train  Accuracy: 73.0%\n",
291
      "Test   Loss: 0.42003\n",
292
      "Test   Accuracy: 51.7%\n",
293
      "Epoch 22\n",
294
      "Train  Loss: 0.47825\n",
295
      "Train  Accuracy: 80.0%\n",
296
      "Test   Loss: 0.40232\n",
297
      "Test   Accuracy: 53.3%\n",
298
      "Epoch 23\n",
299
      "Train  Loss: 0.47127\n",
300
      "Train  Accuracy: 80.0%\n",
301
      "Test   Loss: 0.39606\n",
302
      "Test   Accuracy: 55.0%\n",
303
      "Epoch 24\n",
304
      "Train  Loss: 0.39154\n",
305
      "Train  Accuracy: 83.0%\n",
306
      "Test   Loss: 0.29514\n",
307
      "Test   Accuracy: 48.3%\n",
308
      "Epoch 25\n",
309
      "Train  Loss: 0.42451\n",
310
      "Train  Accuracy: 80.0%\n",
311
      "Test   Loss: 0.29410\n",
312
      "Test   Accuracy: 53.3%\n",
313
      "Epoch 26\n",
314
      "Train  Loss: 0.37418\n",
315
      "Train  Accuracy: 85.0%\n",
316
      "Test   Loss: 0.26566\n",
317
      "Test   Accuracy: 53.3%\n",
318
      "Epoch 27\n",
319
      "Train  Loss: 0.35942\n",
320
      "Train  Accuracy: 84.0%\n",
321
      "Test   Loss: 0.27371\n",
322
      "Test   Accuracy: 53.3%\n",
323
      "Epoch 28\n",
324
      "Train  Loss: 0.37682\n",
325
      "Train  Accuracy: 83.0%\n",
326
      "Test   Loss: 0.31713\n",
327
      "Test   Accuracy: 55.0%\n",
328
      "Epoch 29\n",
329
      "Train  Loss: 0.34180\n",
330
      "Train  Accuracy: 83.0%\n",
331
      "Test   Loss: 0.25558\n",
332
      "Test   Accuracy: 55.0%\n",
333
      "Epoch 30\n",
334
      "Train  Loss: 0.33804\n",
335
      "Train  Accuracy: 87.0%\n",
336
      "Test   Loss: 0.23607\n",
337
      "Test   Accuracy: 53.3%\n",
338
      "Epoch 31\n",
339
      "Train  Loss: 0.31833\n",
340
      "Train  Accuracy: 86.0%\n",
341
      "Test   Loss: 0.22466\n",
342
      "Test   Accuracy: 51.7%\n",
343
      "Epoch 32\n",
344
      "Train  Loss: 0.29819\n",
345
      "Train  Accuracy: 87.0%\n",
346
      "Test   Loss: 0.22489\n",
347
      "Test   Accuracy: 50.0%\n",
348
      "Epoch 33\n",
349
      "Train  Loss: 0.31271\n",
350
      "Train  Accuracy: 89.0%\n",
351
      "Test   Loss: 0.25959\n",
352
      "Test   Accuracy: 55.0%\n",
353
      "Epoch 34\n",
354
      "Train  Loss: 0.29346\n",
355
      "Train  Accuracy: 88.0%\n",
356
      "Test   Loss: 0.23652\n",
357
      "Test   Accuracy: 53.3%\n",
358
      "Epoch 35\n",
359
      "Train  Loss: 0.28696\n",
360
      "Train  Accuracy: 86.0%\n",
361
      "Test   Loss: 0.21594\n",
362
      "Test   Accuracy: 51.7%\n",
363
      "Epoch 36\n",
364
      "Train  Loss: 0.28489\n",
365
      "Train  Accuracy: 87.0%\n",
366
      "Test   Loss: 0.20726\n",
367
      "Test   Accuracy: 53.3%\n",
368
      "Epoch 37\n",
369
      "Train  Loss: 0.25652\n",
370
      "Train  Accuracy: 90.0%\n",
371
      "Test   Loss: 0.18759\n",
372
      "Test   Accuracy: 48.3%\n",
373
      "Epoch 38\n",
374
      "Train  Loss: 0.28203\n",
375
      "Train  Accuracy: 89.0%\n",
376
      "Test   Loss: 0.22545\n",
377
      "Test   Accuracy: 51.7%\n",
378
      "Epoch 39\n",
379
      "Train  Loss: 0.24893\n",
380
      "Train  Accuracy: 93.0%\n",
381
      "Test   Loss: 0.18108\n",
382
      "Test   Accuracy: 50.0%\n",
383
      "Epoch 40\n",
384
      "Train  Loss: 0.26061\n",
385
      "Train  Accuracy: 90.0%\n",
386
      "Test   Loss: 0.17375\n",
387
      "Test   Accuracy: 50.0%\n",
388
      "Epoch 41\n",
389
      "Train  Loss: 0.24927\n",
390
      "Train  Accuracy: 92.0%\n",
391
      "Test   Loss: 0.16775\n",
392
      "Test   Accuracy: 51.7%\n",
393
      "Epoch 42\n",
394
      "Train  Loss: 0.23456\n",
395
      "Train  Accuracy: 92.0%\n",
396
      "Test   Loss: 0.16739\n",
397
      "Test   Accuracy: 51.7%\n",
398
      "Epoch 43\n",
399
      "Train  Loss: 0.23747\n",
400
      "Train  Accuracy: 92.0%\n",
401
      "Test   Loss: 0.18819\n",
402
      "Test   Accuracy: 51.7%\n",
403
      "Epoch 44\n",
404
      "Train  Loss: 0.22980\n",
405
      "Train  Accuracy: 92.0%\n",
406
      "Test   Loss: 0.18161\n",
407
      "Test   Accuracy: 51.7%\n",
408
      "Epoch 45\n",
409
      "Train  Loss: 0.22144\n",
410
      "Train  Accuracy: 94.0%\n",
411
      "Test   Loss: 0.16714\n",
412
      "Test   Accuracy: 50.0%\n",
413
      "Epoch 46\n",
414
      "Train  Loss: 0.23376\n",
415
      "Train  Accuracy: 92.0%\n",
416
      "Test   Loss: 0.16477\n",
417
      "Test   Accuracy: 51.7%\n",
418
      "Epoch 47\n",
419
      "Train  Loss: 0.20786\n",
420
      "Train  Accuracy: 95.0%\n",
421
      "Test   Loss: 0.15308\n",
422
      "Test   Accuracy: 50.0%\n",
423
      "Epoch 48\n",
424
      "Train  Loss: 0.20483\n",
425
      "Train  Accuracy: 94.0%\n",
426
      "Test   Loss: 0.16679\n",
427
      "Test   Accuracy: 50.0%\n",
428
      "Epoch 49\n",
429
      "Train  Loss: 0.19644\n",
430
      "Train  Accuracy: 95.0%\n",
431
      "Test   Loss: 0.15150\n",
432
      "Test   Accuracy: 50.0%\n"
433
     ]
434
    }
435
   ],
436
   "source": [
437
    "\n",
438
    "from braindecode.torch_ext.util import np_to_var, var_to_np\n",
439
    "from braindecode.datautil.iterators import get_balanced_batches\n",
440
    "import torch.nn.functional as F\n",
441
    "from numpy.random import RandomState\n",
442
    "rng = RandomState(None)\n",
443
    "#rng = RandomState((2017,6,30))\n",
444
    "for i_epoch in range(50):\n",
445
    "    i_trials_in_batch = get_balanced_batches(len(train_set.X), rng, shuffle=True,\n",
446
    "                                            batch_size=32)\n",
447
    "    # Set model to training mode\n",
448
    "    model.train()\n",
449
    "    for i_trials in i_trials_in_batch:\n",
450
    "        # Have to add empty fourth dimension to X\n",
451
    "        batch_X = train_set.X[i_trials][:,:,:,None]\n",
452
    "        batch_y = train_set.y[i_trials]\n",
453
    "        net_in = np_to_var(batch_X)\n",
454
    "        if cuda:\n",
455
    "            net_in = net_in.cuda()\n",
456
    "        net_target = np_to_var(batch_y)\n",
457
    "        if cuda:\n",
458
    "            net_target = net_target.cuda()\n",
459
    "        # Remove gradients of last backward pass from all parameters\n",
460
    "        optimizer.zero_grad()\n",
461
    "        # Compute outputs of the network\n",
462
    "        outputs = model(net_in)\n",
463
    "        # Compute the loss\n",
464
    "        loss = F.nll_loss(outputs, net_target)\n",
465
    "        # Do the backpropagation\n",
466
    "        loss.backward()\n",
467
    "        # Update parameters with the optimizer\n",
468
    "        optimizer.step()\n",
469
    "\n",
470
    "    # Print some statistics each epoch\n",
471
    "    model.eval()\n",
472
    "    print(\"Epoch {:d}\".format(i_epoch))\n",
473
    "    for setname, dataset in (('Train', train_set), ('Test', test_set)):\n",
474
    "        i_trials_in_batch = get_balanced_batches(len(dataset.X), rng, batch_size=32, shuffle=False)\n",
475
    "        outputs = []\n",
476
    "        net_targets = []\n",
477
    "        for i_trials in i_trials_in_batch:\n",
478
    "            batch_X = train_set.X[i_trials][:,:,:,None]\n",
479
    "            batch_y = train_set.y[i_trials]\n",
480
    "            \n",
481
    "            net_in = np_to_var(batch_X)\n",
482
    "            if cuda:\n",
483
    "                net_in = net_in.cuda()\n",
484
    "            net_target = np_to_var(batch_y)\n",
485
    "            if cuda:\n",
486
    "                net_target = net_target.cuda()\n",
487
    "            net_target = var_to_np(net_target)\n",
488
    "            output = var_to_np(model(net_in))\n",
489
    "            outputs.append(output)\n",
490
    "            net_targets.append(net_target)\n",
491
    "        net_targets = np_to_var(np.concatenate(net_targets))\n",
492
    "        outputs = np_to_var(np.concatenate(outputs))\n",
493
    "        loss = F.nll_loss(outputs, net_targets)\n",
494
    "        print(\"{:6s} Loss: {:.5f}\".format(\n",
495
    "            setname, float(var_to_np(loss))))\n",
496
    "        predicted_labels = np.argmax(var_to_np(outputs), axis=1)\n",
497
    "        accuracy = np.mean(dataset.y  == predicted_labels)\n",
498
    "        print(\"{:6s} Accuracy: {:.1f}%\".format(\n",
499
    "            setname, accuracy * 100))"
500
   ]
501
  },
502
  {
503
   "cell_type": "code",
504
   "execution_count": 6,
505
   "metadata": {},
506
   "outputs": [],
507
   "source": [
508
    "# Problem: RAM not big enough\n",
509
    "# next session, manage batches through the hard drive\n",
510
    "# add analytics on training performance\n",
511
    "\n",
512
    "# rough results\n",
513
    "# Subject 1:--------------------------------------------\n",
514
    "# Epoch 49\n",
515
    "# Train  Loss: 0.00253\n",
516
    "# Train  Accuracy: 100.0%\n",
517
    "# Test   Loss: 0.00272\n",
518
    "# Test   Accuracy: 60.0%\n",
519
    "\n",
520
    "\n",
521
    "# Subject 2:--------------------------------------------\n",
522
    "# Epoch 49\n",
523
    "# Train  Loss: 0.00132\n",
524
    "# Train  Accuracy: 100.0%\n",
525
    "# Test   Loss: 0.00145\n",
526
    "# Test   Accuracy: 45.0%\n",
527
    "\n",
528
    "\n",
529
    "# Subject 3:--------------------------------------------\n",
530
    "# Epoch 27\n",
531
    "# Train  Loss: 0.00212\n",
532
    "# Train  Accuracy: 100.0%\n",
533
    "# Test   Loss: 0.00209\n",
534
    "# Test   Accuracy: 43.3%\n",
535
    "\n",
536
    "\n",
537
    "# Subject 4:--------------------------------------------\n",
538
    "# Epoch 34\n",
539
    "# Train  Loss: 0.00524\n",
540
    "# Train  Accuracy: 100.0%\n",
541
    "# Test   Loss: 0.00559\n",
542
    "# Test   Accuracy: 46.7%\n",
543
    "\n",
544
    "# Subject 5:--------------------------------------------\n",
545
    "# Epoch 33\n",
546
    "# Train  Loss: 0.01777\n",
547
    "# Train  Accuracy: 100.0%\n",
548
    "# Test   Loss: 0.00994\n",
549
    "# Test   Accuracy: 55.0%\n",
550
    "\n",
551
    "# Subject 6:\n",
552
    "# Epoch 49\n",
553
    "# Train  Loss: 0.00556\n",
554
    "# Train  Accuracy: 100.0%\n",
555
    "# Test   Loss: 0.00560\n",
556
    "# Test   Accuracy: 56.7%\n",
557
    "\n",
558
    "# Subject 7:\n",
559
    "# Epoch 49\n",
560
    "# Train  Loss: 0.00129\n",
561
    "# Train  Accuracy: 100.0%\n",
562
    "# Test   Loss: 0.00143\n",
563
    "# Test   Accuracy: 51.7%\n",
564
    "\n",
565
    "\n",
566
    "# Subject 8:\n",
567
    "# Epoch 49\n",
568
    "# Train  Loss: 0.19644\n",
569
    "# Train  Accuracy: 95.0%\n",
570
    "# Test   Loss: 0.15150\n",
571
    "# Test   Accuracy: 50.0%"
572
   ]
573
  },
574
  {
575
   "cell_type": "code",
576
   "execution_count": null,
577
   "metadata": {},
578
   "outputs": [],
579
   "source": []
580
  }
581
 ],
582
 "metadata": {
583
  "kernelspec": {
584
   "display_name": "Python 3",
585
   "language": "python",
586
   "name": "python3"
587
  },
588
  "language_info": {
589
   "codemirror_mode": {
590
    "name": "ipython",
591
    "version": 3
592
   },
593
   "file_extension": ".py",
594
   "mimetype": "text/x-python",
595
   "name": "python",
596
   "nbconvert_exporter": "python",
597
   "pygments_lexer": "ipython3",
598
   "version": "3.6.5"
599
  }
600
 },
601
 "nbformat": 4,
602
 "nbformat_minor": 2
603
}