Example #1
0
    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)
Example #2
0
 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
Example #3
0
              "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)