def call(self, *args, **kwargs): gent = self._read_data if self.modelstr == 'EEGNet': _co = {} elif self.modelstr == 'rawEEGConv' or self.modelstr == 'TSGLEEGNet': _co = {'TSG': TSG} else: _co = {} acc_list = [] kappa_list = [] data = {'x_test': None, 'y_test': None} for subject in self.subs: pred_list = [] for path in walk_files( os.path.join(self.basepath, '{:0>2d}'.format(subject))): if not self._readed: for data['x_test'], data['y_test'] in gent(subject=subject, mode='test'): self._readed = True if self.standardizing: data = self._standardize(data) model = tf.keras.models.load_model(path, custom_objects=_co) if self.cropping: _Pred = [] for cpd in self._cropping_data((data['x_test'], )): pd = model.predict(cpd, verbose=0) _Pred.append( np.argmax(pd, axis=1) == np.squeeze( data['y_test'])) _Pred = np.array(_Pred) Pred = [] for i in np.arange(_Pred.shape[1]): if _Pred[:, i].any(): Pred.append(1) else: Pred.append(0) acc = np.mean(np.array(Pred)) kappa = 0. # None else: _pred = model.predict(data['x_test'], batch_size=self.batch_size, verbose=self.verbose) pred_list.append(np.squeeze(np.argmax(_pred, axis=1))) pred = self.ensemble(pred_list, self.weight_list[subject - 1]) acc_list.append(np.mean(pred == np.squeeze(data['y_test']))) kappa_list.append(computeKappa(pred, data['y_test'])) self._readed = False avg_acc = np.mean(acc_list) avg_kappa = np.mean(kappa_list) with open(self.resavepath, 'w+') as f: sys.stdout = f print(('{0:s} {1:d}-fold Ensemble({2:s}) ' + self.validation_name + ' Accuracy (kappa)').format(self.modelstr, self.kFold, self.ename)) for i in range(len(self.subs)): print('Subject {0:0>2d}: {1:.2%} ({2:.4f})'.format( self.subs[i], acc_list[i], kappa_list[i])) print('Average : {0:.2%} ({1:.4f})'.format(avg_acc, avg_kappa)) sys.stdout = _console f.seek(0, 0) for line in f.readlines(): print(line) f.close() acc_list.append(avg_acc) kappa_list.append(avg_kappa) return acc_list, kappa_list
filepath = os.path.join('data', 'A', 'Test', 'A03E' + '.mat') vis = visualize( model, vis_data_file=filepath, cropping=cropping, # step=25, beg=beg, end=end, srate=srate) data = vis._read_data(srate) loss, acc = model.evaluate(data['x'], data['y'], batch_size=10, verbose=2) _pred = model.predict(data['x'], batch_size=10, verbose=2) pred = np.argmax(_pred, axis=1) kappa = computeKappa(pred, data['y']) print('loss: %.4f\tacc: %.4f\tkappa: %.4f' % (loss, acc, kappa)) vis.kernel('tfconv') vis.line_kernel('tfconv', [1, 6, 7, 10, 11, 15]) # vis.fft_kernel('tfconv') # vis.fft_output('tfconv') # vis.fs_fft_output('tfconv') # vis.class_fft_output('tfconv') # vis.depthwise_kernel('sconv') # vis.topo_kernel('sconv') # vis.fs_class_topo_kernel('sconv') # vis.fs_class_fft_output('tfconv') # vis.fs_class_freq_topo_kernel('sconv') # vis.kernel('fs') # vis.line_kernel('fs')