РЕШЕНИЕ
Хорошо, я нашел решение, может быть, не самое лучшее. По сути, только что создал новый метод, который использовал GradientTape от TensorFlow. По сути, получите прогнозы, сгенерируйте цели, рассчитайте потери и затем обновите градиенты.
with tf.GradientTape() as tape:
# Forward pass
y_preds = self.model(x, training=True)
# Generate the target values from the predictions
actual_deltas, actual_objectness = self.generate_target_values(y_preds, labels)
#Get the loss
loss = self.model.compiled_loss([actual_deltas, actual_objectness], y_preds, regularization_losses=self.model.losses)
# Compute gradients
trainable_vars = self.model.trainable_variables
gradients = tape.gradient(loss, trainable_vars)
# Update weights
self.model.optimizer.apply_gradients(zip(gradients, trainable_vars))
Я понимаю, что есть более эффективные способы сделать это с помощью подкласса Keras, но это сработало.
ORIGINAL POST
В настоящее время я пытаюсь создать модель, в которой прогноз необходимо выполнить с помощью функции, которая сравнивает их с меткой обучения. Затем эта функция вернет целевые значения. Как мне обучить мою модель, чтобы прогнозы передавались моей функции, и она возвращала функцию pred. Я использую Tensorflow 2.1.0 и Keras 2.2.4-tf
Изменить:
Модель представляет собой модифицированную модель Faster-RCNN. Я пытаюсь добавить функцию, которая принимает прогнозы (вектор 2xN и 4xN), преобразует их в ограничивающие прямоугольники, сравнивает их с ограничивающими прямоугольниками истинности земли, а затем возвращает то, какими должны были быть значения каждого из предложенных значений ограничивающих прямоугольников. , чтобы правильно наложить эту ограничивающую рамку.