diff --git a/mindspore/_extends/parse/parser.py b/mindspore/_extends/parse/parser.py index 2c3168bc62..728dfc874b 100644 --- a/mindspore/_extends/parse/parser.py +++ b/mindspore/_extends/parse/parser.py @@ -17,18 +17,21 @@ """The module of parser python object, called by c++.""" import ast -import types -import inspect import hashlib -from textwrap import dedent +import inspect +import types from dataclasses import is_dataclass +from textwrap import dedent + import asttokens -import mindspore.nn as nn -from mindspore import log as logger + from mindspore import Tensor as MsTensor +from mindspore import context +from mindspore import log as logger +from mindspore import nn from mindspore import ops -from mindspore.common.dtype import pytype_to_dtype from mindspore.common.api import _MindSporeFunction +from mindspore.common.dtype import pytype_to_dtype from .namespace import CellNamespace, ClosureNamespace, ClassMemberNamespace from .resources import parse_object_map, convert_object_map, trope_ns, SYMBOL_UNDEFINE, NO_IMPLEMENT @@ -100,6 +103,8 @@ def get_parse_method_of_class(obj, parse_method=None): else: if isinstance(obj, nn.Cell): if obj.enable_hook: + if context.get_context("mode") == context.GRAPH_MODE: + raise ValueError("The graph mode does not support hook function.") method_name = "_hook_construct" else: method_name = "construct" diff --git a/mindspore/nn/cell.py b/mindspore/nn/cell.py index ed6eac4036..d9dd2d6e0a 100755 --- a/mindspore/nn/cell.py +++ b/mindspore/nn/cell.py @@ -241,6 +241,8 @@ class Cell: if kwargs: raise ValueError("For 'graph' mode, the outermost network does not support passing " "key-value pair parameters and variable key-value pair parameters.") + if self.enable_hook: + raise ValueError("The graph mode does not support hook function.") out = self.compile_and_run(*inputs) return out