def __init__(self, fit_kwargs, compile_kwargs, name, TPA_view_IDs, TPA_dense_units=TPA_DENSE_DEFAULT, **kwargs): vb.print_general("Initializing {} - Baseline1...".format(name)) vb.print_general("Model will be trained on {} views".format(TPA_view_IDs)) def downsampling(tpa_view_id): return TimeDistributed(AvgPool2D(pool_size=(4, 4), strides=None), name='TPA{}_'.format(tpa_view_id)) io_TPAs = [_build_TPA_embedding(id, TPA_dense_units, block1=downsampling(id)) for id in TPA_view_IDs] i_TPAs = [x[0] for x in io_TPAs] o_TPAs = [x[1] for x in io_TPAs] if len(TPA_view_IDs) > 1: TPA_merged = Concatenate(name='view_concat', axis=-1)([*o_TPAs]) if len(TPA_view_IDs) == 1: TPA_merged = [*o_TPAs] rnn = RNN(int(TPA_dense_units*len(io_TPAs)*RNN_UNITS_SCALING), activation='tanh', recurrent_activation='sigmoid', return_sequences=True, name="TPA_GRU")(TPA_merged) TPA_dense = TimeDistributed( Dense(project.N_CLASSES, activation=None), name="TPA_dense")(rnn) TPA_classification = Activation( activation='softmax', name='TPA_classification')(TPA_dense) model = Model(i_TPAs, TPA_classification, name="Model_{}xTPA".format(len(TPA_view_IDs))) Models_Training.__init__(self, name=name, model=model, fit_kwargs=fit_kwargs, compile_kwargs=compile_kwargs, TPA_view_IDs=TPA_view_IDs)
def train(self): if self.pretraining: vb.print_general("Pretraining...") self.model.compile(**self.precompile_kwargs) self.model.fit(**self.prefit_kwargs) self.pretrained = True if self.pretraining and not self.pretrained: raise Exception("Pretrain the model first!") if self.pretrained: print("\n\n\n\n\n\n") vb.print_general("Training...") self.model.compile(**self.compile_kwargs) self.model.fit(**self.fit_kwargs) self.trained = True
"rb") as f: optimal_threshold = pickle.load(f) #2A. Read in list of clips to test on. subjects = ds.read_test_subjects() test_set_path = ds.read_test_set_path() clips_fps = glob.glob( os.path.join(test_set_path, "subject*", "*", "*ID*.TXT")) prefixes = list(set([fp.split("ID")[0] for fp in clips_fps])) if len(clips_fps) / len(prefixes) != 3: raise Exception( "It seems that there are some missing/additional views in your test set" ) #2B. loop vb.print_general("Testing {} on {}".format(config_json_name, test_set_path)) vb.print_general( "Testing: executing main loop (loading in data + prediction)...") view_IDs = model_config["view_IDs"] predictions_dict, sample_classes_dict, labels_dict, timestamps_dict = [ dict() for i in range(4) ] prefixes = prefixes for prefix in prefixes: arrays = [] timestamps = [] for id in view_IDs: # + Z-score! a, ts = tpa_tools.txt2np(prefix + "ID" + id + ".TXT") arrays.append((a - mu) / sigma) timestamps.append(ts)