为了账号安全,请及时绑定邮箱和手机立即绑定

Keras:基于 Faster-RCNN 预测生成目标值

Keras:基于 Faster-RCNN 预测生成目标值

小唯快跑啊 2022-11-09 16:23:11
解决方案好的,我确实找到了解决方案,也许不是最好的解决方案。本质上只是创建了一个使用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 gradientstrainable_vars = self.model.trainable_variablesgradients = tape.gradient(loss, trainable_vars)# Update weightsself.model.optimizer.apply_gradients(zip(gradients, trainable_vars))我知道使用 Keras 子类化有更好的方法来做到这一点,但这确实起到了作用。原帖我目前正在尝试创建一个模型,其中需要通过一个函数运行预测,该函数将它们与训练标签进行比较。然后此函数将返回目标值。如何训练我的模型,以便将预测输入到我的函数中并返回函数 pred。我正在使用 Tensorflow 2.1.0 和 Keras 2.2.4-tf编辑:该模型是修改后的 Faster-RCNN 模型。我正在尝试添加该函数,该函数接受预测(2xN 和 4xN 向量),将它们转换为边界框,将它们与地面实况边界框进行比较,然后返回每个建议的边界框值应该是什么, 为了正确地覆盖这个边界框。
查看完整描述

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 子类化有更好的方法来做到这一点,但这确实起到了作用。


查看完整回答
反对 回复 2022-11-09
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信