# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. import os import h5py import numpy as np from keras.models import Model def loaddata(filename): file = h5py.File(filename, 'r') train_x = file['x'][:] train_y = file['y'][:] valid_x = file['valid_x'][:] valid_y = file['valid_y'][:] test_x = file['test_x'][:] test_y = file['test_y'][:] file.close() return train_x, train_y, valid_x, valid_y, test_x, test_y def load_NTU(case): if case == 0: filename = os.path.join('./data/ntu', 'NTU_CS.h5') else: filename = os.path.join('./data/NTU', 'NTU_CV.h5') train_x, train_y, valid_x, valid_y, test_x, test_y = loaddata(filename) return train_x, train_y, valid_x, valid_y, test_x, test_y def get_data(dataset, case): if dataset == 'NTU': train_x, train_y, valid_x, valid_y, test_x, test_y = load_NTU(case) return train_x, train_y, valid_x, valid_y, test_x, test_y def Downsample(train_x, valid_x, test_x, ratio): train_x = train_x[:,0::ratio,:] valid_x = valid_x[:,0::ratio,:] test_x = test_x[:, 0::ratio, :] return train_x, valid_x, test_x def get_cases(dataset): if dataset == 'NTU': cases = 2 return cases def get_activation(model,test_x, test_y, path, VA = 11 , par = 10): intermediat_layer_model = Model(inputs= model.input, outputs=model.layers[-2].output) score = intermediat_layer_model.predict(test_x, batch_size = 256) pred = softmax(score) pred_label = np.argmax(pred, axis= -1) label = np.argmax(test_y, axis= -1) total = ((label-pred_label)==0).sum() print("Model Accuracy:%.2f" % (float(total) / len(label)*100)) np.savetxt(path, score, fmt = '%f') return (float(total)/len(label)*100) def softmax(data): e = np.exp(data - np.amax(data, axis=-1, keepdims=True)) s = np.sum(e, axis=-1, keepdims=True) return e / s