def fit(self, X, y=None): print ("fit X: ", X.shape) print ("fit y: ", y.shape if y is not None else '') """ Split train and test set """ train_datas = self.normal_datas[X] valid_datas = np.vstack([np.delete(self.normal_datas,X,axis=0), self.abnormal_datas]) valid_labels = np.hstack([np.zeros(self.normal_datas.shape[0] - X.shape[0]), np.ones(self.abnormal_datas.shape[0])]) """ Rebuild VAE and train """ global global_best_test_score tf.reset_default_graph() # rebuild VAE vae = VAE(**self.vae_params) #cPickle.dump(vae, open(os.path.join(self.save_candidate_folder, 'vae_class.pkl'), 'wb')) vae.build() """ Normalization """ vae.build_normalize(train_data=train_datas) norm_train_datas = vae.transform_raw_data(raw_data=train_datas) norm_valid_datas = vae.transform_raw_data(raw_data=valid_datas) """ Mini Batchs """ mini_batchs = [norm_train_datas[i:min(i + batch_size, len(norm_train_datas))] for i in range(0, len(norm_train_datas), batch_size)] """ Train """ self.best_test_score, _ = train_vae.train(vae=vae, mini_batchs=mini_batchs, valida_data=norm_valid_datas, valida_label=valid_labels, save_out_model=None, n_epoch=30) # self.best_test_score, _ = train_vae.train(vae=vae, mini_batchs=mini_batchs, test_data=norm_valid_datas, # test_label=valid_labels,save_out_model=os.path.join(self.save_candidate_folder, 'vae_tensor.ckpt')) """ Save result """ print ("Perform training with the below parameters: ") print ("------------------------------------------- ") print (json.dumps(self.vae_params,indent=2)) print ("------------------------------------------- ") print ("Result (F1): ", self.best_test_score)
rs = RandomizedSearchCV(estimator=vae_hyper, param_distributions=params, n_jobs=1, verbose=2, n_iter=10, cv=5, return_train_score=False, refit=False) rs.fit(X=np.arange(normal_datas.shape[0]),y=None) print ("Best parameters found: ") print (json.dumps(rs.best_params_, indent=2)) """ Create new VAE model for whole dataset with best parameter found """ tf.reset_default_graph() vae = VAE(**rs.best_params_) # save class instance by using cPickle, main purpose is to save parameters too. cPickle.dump(vae, open(os.path.join(save_vae_hyper_folder, 'vae_class.pkl'), 'wb')) vae.build() """ Prepare data """ datas = np.vstack([normal_datas, bearing_datas, gear_datas]) labels = np.hstack([np.zeros(normal_datas.shape[0]), # 0 for inlier, 1 for outlier np.ones(bearing_datas.shape[0]), np.ones(gear_datas.shape[0])]) train_datas, test_datas, train_labels, test_labels = utils.split_train_test(datas=datas, labels=labels, frac=0.8) """ Mini-batchs & perform MinMaxScaler """ vae.build_normalize(train_data=train_datas) # 1