diff --git a/official/recommend/tbnet/export.py b/official/recommend/tbnet/export.py
index aee27798c225d88f1e2909e71e30e42dc1552ea2..dd6275cfe33d2c8a751135b4a675320868a63c26 100644
--- a/official/recommend/tbnet/export.py
+++ b/official/recommend/tbnet/export.py
@@ -30,7 +30,7 @@ def get_args():
parser.add_argument(
'--config_path',
type=str,
- required=False,
+ required=True,
default='',
help="json file for dataset"
)
diff --git a/research/nlp/rotate/README_CN.md b/research/nlp/rotate/README_CN.md
index dc5e24da7b4d6ec5615e44bf82860e483972069f..c37c0e5e0d300ecb3b4236cf1b62589e52aa5fc2 100644
--- a/research/nlp/rotate/README_CN.md
+++ b/research/nlp/rotate/README_CN.md
@@ -228,7 +228,7 @@ bash scripts/run_eval.sh [DEVICE_ID] [DEVICE_TARGET] [EVAL_CHECKPOINT] [EVAL_LOG
在运行以下命令之前,请检查用于评估的检查点路径。
```bash
- bash scripts/run_eval.sh 0 Ascend Data/wn18rr/ checkpoints/rotate-standalone-ascend/rotate.ckpt eval-standalone-ascend.log
+ bash scripts/run_eval.sh 0 Ascend checkpoints/rotate-standalone-ascend/rotate.ckpt eval-standalone-ascend.log
```
上述python命令将在后台运行,您可以通过ms_log/eval-standalone-ascend文件查看类似如下的结果:
@@ -342,4 +342,4 @@ python export.py --eval_checkpoint [EVAL_CHECKPOINT] --file_format [FILE_FORMAT]
# [ModelZoo主页](#目录)
-请浏览官网[主页](https://gitee.com/mindspore/models)。
\ No newline at end of file
+请浏览官网[主页](https://gitee.com/mindspore/models)。
diff --git a/research/nlp/rotate/eval.py b/research/nlp/rotate/eval.py
index b658931f38e80ad18b554165635d9e53c8ec15b1..3e6a2f2daac81c92b9a49185156237b0ecb4e526 100644
--- a/research/nlp/rotate/eval.py
+++ b/research/nlp/rotate/eval.py
@@ -42,20 +42,20 @@ class KGEModel(nn.Cell):
def __init__(self, network, mode='head-mode'):
super(KGEModel, self).__init__()
self.network = network
+ self.construct_head = self.network.construct_head
+ self.construct_tail = self.network.construct_tail
self.mode = mode
self.sort = P.Sort(axis=1, descending=True)
def construct(self, positive_sample, negative_sample, filter_bias):
""" Sort candidate entity id and positive sample entity id. """
if self.mode == 'head-mode':
- score = self.network.construct_head((positive_sample, negative_sample))
- positive_arg = positive_sample[:, 0]
+ score = self.construct_head((positive_sample, negative_sample))
else:
- score = self.network.construct_tail((positive_sample, negative_sample))
- positive_arg = positive_sample[:, 2]
+ score = self.construct_tail((positive_sample, negative_sample))
score += filter_bias
_, argsort = self.sort(score)
- return argsort, positive_arg
+ return argsort
class EvalKGEMetric(nn.Cell):
@@ -77,27 +77,34 @@ class EvalKGEMetric(nn.Cell):
def construct(self, positive_sample, negative_sample, filter_bias):
""" Calculate metrics. """
- batch_size = positive_sample.shape[0]
- argsort, positive_arg = self.kgemodel(positive_sample, negative_sample, filter_bias)
- argsort, positive_arg = argsort.asnumpy(), positive_arg.asnumpy()
- log = []
- for i in range(batch_size):
- ranking = np.where(argsort[i, :] == positive_arg[i])[0][0]
- ranking = 1 + ranking
- log.append({
- 'MRR': 1.0 / ranking,
- 'MR': ranking,
- 'HITS@1': 1.0 if ranking <= 1 else 0.0,
- 'HITS@3': 1.0 if ranking <= 3 else 0.0,
- 'HITS@10': 1.0 if ranking <= 10 else 0.0,
- })
- return log
+ argsort = self.kgemodel(positive_sample, negative_sample, filter_bias)
+ if self.mode == 'head-mode':
+ positive_arg = positive_sample[:, 0]
+ else:
+ positive_arg = positive_sample[:, 2]
+ return argsort, positive_arg
def modelarts_process():
pass
+def generate_log(argsort, positive_arg, batch_size):
+ argsort, positive_arg = argsort.asnumpy(), positive_arg.asnumpy()
+ log = []
+ for i in range(batch_size):
+ ranking = np.where(argsort[i, :] == positive_arg[i])[0][0]
+ ranking = 1 + ranking
+ log.append({
+ 'MRR': 1.0 / ranking,
+ 'MR': ranking,
+ 'HITS@1': 1.0 if ranking <= 1 else 0.0,
+ 'HITS@3': 1.0 if ranking <= 3 else 0.0,
+ 'HITS@10': 1.0 if ranking <= 10 else 0.0,
+ })
+ return log
+
+
@moxing_wrapper(pre_process=modelarts_process)
def eval_kge():
""" Link Prediction Task for Knowledge Graph Embedding Model """
@@ -127,10 +134,16 @@ def eval_kge():
eval_model_tail = EvalKGEMetric(network=eval_net, mode='tail-mode')
for test_data in test_dataloader_head.create_dict_iterator():
- log_head = eval_model_head.construct(test_data["positive"], test_data["negative"], test_data["filter_bias"])
+ argsort, positive_arg = eval_model_head.construct(test_data["positive"], test_data["negative"],
+ test_data["filter_bias"])
+ batch_size = test_data["positive"].shape[0]
+ log_head = generate_log(argsort, positive_arg, batch_size)
logs += log_head
for test_data in test_dataloader_tail.create_dict_iterator():
- log_tail = eval_model_tail.construct(test_data["positive"], test_data["negative"], test_data["filter_bias"])
+ argsort, positive_arg = eval_model_tail.construct(test_data["positive"], test_data["negative"],
+ test_data["filter_bias"])
+ batch_size = test_data["positive"].shape[0]
+ log_tail = generate_log(argsort, positive_arg, batch_size)
logs += log_tail
metrics = {}