def ecoglstm(lstmsize, fcsize, dropout, optim): print("Reading data...") data = np.load( "/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/train_data.npy") labels = np.load( "/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/train_labels.npy") train_data, train_labels, val_data, val_labels = DataHandler.split( 0.7, data, labels) lstmcl = LSTMDiscriminative(lstmsize[0], fcsize[0], dropout[0], optim[0], 10, 128) model = lstmcl.train(train_data, train_labels) result = -lstmcl.test(model, val_data, val_labels) print('Result = %f' % result) return result
mse_pos, mse_neg = lstmcl.predict_mse(model_pos, model_neg, dynamic_all[predict_idx]) ratios_generative[predict_idx] = lstmcl.pos_neg_ratios(model_pos, model_neg, dynamic_all[predict_idx]) # extract activations activations_pos = lstmcl.activations(model_pos, dynamic_all[predict_idx]) activations_neg = lstmcl.activations(model_neg, dynamic_all[predict_idx]) activations_generative[predict_idx] = np.concatenate((activations_pos[:, -1, :], activations_neg[:, -1, :]), axis=1) """ # # Discriminative LSTM # print " Extracting ratios and activations from discriminative LSTM..." # train the model lstmcl = LSTMDiscriminative(d_lstmsize, d_fcsize, d_lstmdropout, d_lstmoptim, d_lstmnepochs, d_lstmbatch) model = lstmcl.train(dynamic_all[train_idx], labels_all[train_idx]) # extract ratios ratios_discriminative[predict_idx] = lstmcl.pos_neg_ratios( model, dynamic_all[predict_idx]) # extract activations activations_discriminative[predict_idx] = lstmcl.activations( model, dynamic_all[predict_idx]) # # Prepare combined datasets for the future experiments # print 'Enriching the datasets...' #enriched_by_generative_ratios = np.concatenate((static_all, np.matrix(ratios_generative).T), axis=1)
batchsize = 512 # load the dataset print 'Loading the dataset..' static_train = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/fourier/train_data.npy') dynamic_train = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/train_data.npy') static_val = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/fourier/test_data.npy') dynamic_val = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/test_data.npy') labels_train = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/train_labels.npy') labels_val = np.load( '/storage/hpc_anna/GMiC/Data/ECoGmixed/preprocessed/test_labels.npy') nsamples = dynamic_train.shape[0] # split the data into training and test train_idx = np.random.choice(range(0, nsamples), size=np.round(nsamples * 0.7, 0), replace=False) test_idx = list(set(range(0, nsamples)) - set(train_idx)) # train the model and report performance lstmcl = LSTMDiscriminative(lstmsize, fcsize, dropout, optim, nepochs, batchsize) model = lstmcl.train(dynamic_train[train_idx], labels_train[train_idx]) print 'Generative LSTM classifier on dynamic features: %.4f' % lstmcl.test( model, dynamic_train[test_idx], labels_train[test_idx])