1 回答
TA贡献1865条经验 获得超7个赞
好的,我确实找到了解决方案,也许不是最好的解决方案。本质上只是创建了一个使用 TensorFlow 的 GradientTape 的新方法。本质上,获取预测、生成目标、计算损失然后更新梯度。
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 子类化有更好的方法来做到这一点,但这确实起到了作用。
添加回答
举报