diff --git a/official/cv/deeptext/src/Deeptext/proposal_generator.py b/official/cv/deeptext/src/Deeptext/proposal_generator.py
index 3edd1c68fffd49e2704ecc8edc701b82e12579b8..2b484be8895a5d26926ec0d7f4577fdc279f3147 100644
--- a/official/cv/deeptext/src/Deeptext/proposal_generator.py
+++ b/official/cv/deeptext/src/Deeptext/proposal_generator.py
@@ -17,8 +17,9 @@
 import numpy as np
 import mindspore.nn as nn
 import mindspore.common.dtype as mstype
+from mindspore.ops import functional as F
 from mindspore.ops import operations as P
-from mindspore import Tensor
+from mindspore import context, Tensor
 
 
 class Proposal(nn.Cell):
@@ -112,6 +113,7 @@ class Proposal(nn.Cell):
         cfg = config
         self.topK_stage1 = ()
         self.topK_shape = ()
+        self.exec_mode = context.get_context("mode")
         total_max_topk_input = 0
         if not self.training_local:
             self.num_pre = cfg.rpn_nms_pre
@@ -146,6 +148,9 @@ class Proposal(nn.Cell):
                 bbox_pred_list = bbox_pred_list + (rpn_bbox_pred_i,)
 
             proposals, masks = self.get_bboxes_single(cls_score_list, bbox_pred_list, anchor_list)
+            if self.exec_mode == context.PYNATIVE_MODE:
+                proposals = F.stop_gradient(proposals)
+                masks = F.stop_gradient(masks)
             proposals_tuple += (proposals,)
             masks_tuple += (masks,)
         return proposals_tuple, masks_tuple
diff --git a/official/cv/deeptext/src/Deeptext/rcnn.py b/official/cv/deeptext/src/Deeptext/rcnn.py
index b1d34bbb70254eafd3b328b00f4967c289e33c4c..dda16fbdc37116c223346ecb0964b3d549e9f941 100644
--- a/official/cv/deeptext/src/Deeptext/rcnn.py
+++ b/official/cv/deeptext/src/Deeptext/rcnn.py
@@ -23,11 +23,13 @@ from mindspore.common.initializer import initializer
 from mindspore.common.parameter import Parameter
 from model_utils.config import config as default_config
 
+
 if default_config.export_device_target == "Ascend":
     mtype = mstype.float16
 else:
     mtype = mstype.float32
 
+
 class DenseNoTranpose(nn.Cell):
     """Dense method"""
 
@@ -153,7 +155,7 @@ class Rcnn(nn.Cell):
             bbox_weights = self.cast(self.logicaland(self.greater(labels, 0), mask), mstype.int32) * labels
             if self.use_ambigous_sample:
                 bbox_weights = self.cast(self.logicaland(self.equal(labels, 1), mask), mstype.int32) * labels
-            labels = self.cast(self.onehot(labels, self.num_classes, self.on_value, self.off_value), mstype.float32)
+            labels = self.cast(self.onehot(labels, self.num_classes, self.on_value, self.off_value), x_cls.dtype)
             bbox_targets = self.tile(self.expandims(bbox_targets, 1), (1, self.num_classes, 1))
 
             loss, loss_cls, loss_reg, loss_print = self.loss(x_cls, x_reg, bbox_targets, bbox_weights, labels, mask)