Пример #1
0
    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)
Пример #2
0
    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