last = i + T ts.append(x[i:last]) return np.array(ts) def gen_multi_feature(x, T): ret = [] for i in range(x.shape[0]): ts = slide_window(x[i], T) ret.append(ts) return np.array(ret) if __name__ == '__main__': path = './data/train-test-0.4.npz' train_data, test_data, train_label, test_label = load_train_test(path) T = 10 train_data = gen_multi_feature(train_data, T) test_data = gen_multi_feature(test_data, T) TEST = False model_save_path = './models/cnn_lstm.model' tmp_save_path = './models/cnn_lstm_%s.model' batch_size = 512 time_step = train_data.shape[1] input_size = train_data.shape[2] n_filters = 64 hidden_size = 64 EPOCH = 100 lr = 1e-2
print('anomaly size, ratio:', anomaly_size, anomaly_ratio) split_ratio = 0.4 save_path = './data/train-test-%s' % split_ratio if not os.path.exists(save_path + '.npz'): print('split train test...') train_data, test_data, train_label, test_label = split_train_test( data, label, split_ratio) np.savez(save_path, train_data=train_data, test_data=test_data, train_label=train_label, test_label=test_label) else: print('read train test...') train_data, test_data, train_label, test_label = load_train_test( save_path + '.npz') print(train_data.shape, test_data.shape, sum(train_label), sum(test_label)) batch_size = 512 EPOCH = 500 lr = 0.001 model_save_path = './models/nn.model' TEST = True x = torch.from_numpy(train_data).float() y = torch.from_numpy(train_label).long() model = NN().to(DEVICE) optimizer = torch.optim.Adam(model.parameters(), lr=lr) loss_func = torch.nn.CrossEntropyLoss() if not TEST: for epoch in range(EPOCH):