def train(self):
    '\n        this function trains the final network\n        :return: \n        '
    self.load_model()
    if (self.model is None):
        self.model = self.UNet(input_shape=(64, 64, 3))
    print(self.model.summary())
    for k in range(0, 4):
        for i in range(0, 14):
            print(i)
            X_train = np.load(os.path.join(self.images_dir, (('X_' + str(i)) + '.npy')))
            X1_train = np.load(os.path.join(self.clustering_dir, (('train_X_' + str(i)) + '.npy')))
            X2_train = np.load(os.path.join(self.classification_dir, (('train_X_' + str(i)) + '.npy')))
            X_train = X_train.astype('float32')
            X1_train = X1_train.astype('float32')
            X2_train = X2_train.astype('float32')
            y_train = np.load(os.path.join(self.images_dir, (('y_' + str(i)) + '.npy')))
            y_train = keras.utils.to_categorical(y_train, 15000)
            self.model.fit([X_train, X1_train, X2_train], [y_train], batch_size=64, nb_epoch=1, shuffle=True)
        self.model.save('final_net_dsp.h5')
this function trains the final network
:return:
def train(self):
    '\n        this function trains the final network\n        :return: \n        '
    self.load_model()
    if (self.model is None):
        self.model = self.UNet(input_shape=(64, 64, 3))
    print(self.model.summary())
    for k in range(0, 4):
        for i in range(0, 14):
            print(i)
            X_train = np.load(os.path.join(self.images_dir, (('X_' + str(i)) + '.npy')))
            X1_train = np.load(os.path.join(self.clustering_dir, (('train_X_' + str(i)) + '.npy')))
            X2_train = np.load(os.path.join(self.classification_dir, (('train_X_' + str(i)) + '.npy')))
            X_train = X_train.astype('float32')
            X1_train = X1_train.astype('float32')
            X2_train = X2_train.astype('float32')
            y_train = np.load(os.path.join(self.images_dir, (('y_' + str(i)) + '.npy')))
            y_train = keras.utils.to_categorical(y_train, 15000)
            self.model.fit([X_train, X1_train, X2_train], [y_train], batch_size=64, nb_epoch=1, shuffle=True)
        self.model.save('final_net_dsp.h5')