forked from huawei/mindspore2022
!28028 [ME] Optimize the error message of the operator module.
Merge pull request !28028 from Margaret_wangrui/operator
This commit is contained in:
commit
3b6c40ff1e
|
|
@ -108,6 +108,23 @@ AnfNodePtr HyperMap::FullMake(const FuncGraphPtr &func_graph, const AnfNodePtr &
|
|||
return func_graph->NewCNodeInOrder(inputs);
|
||||
}
|
||||
|
||||
std::vector<std::string> HyperMap::GetHyperMapInputIndex(size_t num) {
|
||||
std::string error_index;
|
||||
std::string next_index;
|
||||
if (num == 1) {
|
||||
// The first element in HyperMap is func_graph
|
||||
error_index = "first";
|
||||
next_index = "second";
|
||||
} else if (num == 2) {
|
||||
error_index = "second";
|
||||
next_index = "third";
|
||||
} else {
|
||||
error_index = std::to_string(num) + "th";
|
||||
next_index = std::to_string(num + 1) + "th";
|
||||
}
|
||||
return {error_index, next_index};
|
||||
}
|
||||
|
||||
AnfNodePtr HyperMap::FullMake(const std::shared_ptr<List> &type, const FuncGraphPtr &func_graph,
|
||||
const AnfNodePtr &fn_arg, const ArgsPairList &arg_map) {
|
||||
MS_EXCEPTION_IF_NULL(func_graph);
|
||||
|
|
@ -116,21 +133,24 @@ AnfNodePtr HyperMap::FullMake(const std::shared_ptr<List> &type, const FuncGraph
|
|||
size_t size = type->elements().size();
|
||||
size_t num = 0;
|
||||
std::ostringstream oss;
|
||||
bool is_not_same =
|
||||
std::any_of(arg_map.begin(), arg_map.end(), [&num, size, &oss](const std::pair<AnfNodePtr, TypePtr> &item) {
|
||||
num++;
|
||||
auto lhs = std::static_pointer_cast<List>(item.second);
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << (num - 1) << "th element in HyperMap has wrong type, expected a List, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "The length of " << (num - 1) << "th List in HyperMap is " << size << ", but the length of " << num
|
||||
<< "th List in HyperMap is " << lhs->elements().size() << ".\n";
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
bool is_not_same = false;
|
||||
for (auto &item : arg_map) {
|
||||
num++;
|
||||
auto lhs = std::static_pointer_cast<List>(item.second);
|
||||
std::vector<std::string> indexes = GetHyperMapInputIndex(num);
|
||||
std::string error_index = indexes[0];
|
||||
std::string next_index = indexes[1];
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << error_index << " element in HyperMap has wrong type, expected a List, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "\nThe length of the " << error_index << " element in HyperMap is " << size << ", but the length of the "
|
||||
<< next_index << " element in HyperMap is " << lhs->elements().size() << ".\n";
|
||||
is_not_same = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_not_same) {
|
||||
MS_LOG(EXCEPTION) << "The lists in HyperMap should have the same length. " << oss.str();
|
||||
}
|
||||
|
|
@ -175,21 +195,24 @@ AnfNodePtr HyperMap::FullMake(const std::shared_ptr<Tuple> &type, const FuncGrap
|
|||
size_t size = type->elements().size();
|
||||
size_t num = 0;
|
||||
std::ostringstream oss;
|
||||
bool is_not_same =
|
||||
std::any_of(arg_map.begin(), arg_map.end(), [&num, size, &oss](const std::pair<AnfNodePtr, TypePtr> &item) {
|
||||
num++;
|
||||
auto lhs = std::static_pointer_cast<Tuple>(item.second);
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << (num - 1) << "th element in HyperMap has wrong type, expected a Tuple, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "The length of " << (num - 1) << "th Tuple in HyperMap is " << size << ", but the length of " << num
|
||||
<< "th Tuple in HyperMap is " << lhs->elements().size() << ".\n";
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
bool is_not_same = false;
|
||||
for (auto &item : arg_map) {
|
||||
num++;
|
||||
auto lhs = std::static_pointer_cast<Tuple>(item.second);
|
||||
std::vector<std::string> indexes = GetHyperMapInputIndex(num);
|
||||
std::string error_index = indexes[0];
|
||||
std::string next_index = indexes[1];
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << error_index << " element in HyperMap has wrong type, expected a Tuple, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "\nThe length of the " << error_index << " element in HyperMap is " << size << ", but the length of the "
|
||||
<< next_index << " element in HyperMap is " << lhs->elements().size() << ".\n";
|
||||
is_not_same = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_not_same) {
|
||||
MS_LOG(EXCEPTION) << "The length of tuples in HyperMap must be the same. " << oss.str();
|
||||
}
|
||||
|
|
@ -293,8 +316,18 @@ AnfNodePtr HyperMap::Make(const FuncGraphPtr &func_graph, const AnfNodePtr &fn_a
|
|||
oss << "There are " << arg_map.size() << " inputs of `" << name_ << "`, corresponding type info:\n"
|
||||
<< trace::GetDebugInfo(func_graph->debug_info()) << "\n";
|
||||
int64_t idx = 0;
|
||||
std::string str_index = "first";
|
||||
for (auto &item : arg_map) {
|
||||
oss << "The type of " << (++idx + 1) << "th argument in HyperMap is " << item.second->ToString() << ".\n";
|
||||
// The first element in HyperMap is func_graph
|
||||
if (idx == 0) {
|
||||
str_index = "second";
|
||||
} else if (idx == 1) {
|
||||
str_index = "third";
|
||||
} else {
|
||||
str_index = std::to_string(idx + 2) + "th";
|
||||
}
|
||||
++idx;
|
||||
oss << "The type of the " << str_index << " argument in HyperMap is " << item.second->ToString() << ".\n";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "The types of arguments in HyperMap must be consistent, "
|
||||
<< "but the types of arguments are inconsistent.\n"
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ class HyperMap : public MetaFuncGraph {
|
|||
const ArgsPairList &arg_map);
|
||||
AnfNodePtr Make(const FuncGraphPtr &graph, const AnfNodePtr &fn_arg, const ArgsPairList &arg_map);
|
||||
ArgsPairList Harmonize(const FuncGraphPtr &graph, const ArgsPairList &args_spec_list);
|
||||
std::vector<std::string> GetHyperMapInputIndex(size_t num);
|
||||
|
||||
MultitypeFuncGraphPtr fn_leaf_;
|
||||
bool reverse_;
|
||||
|
|
|
|||
|
|
@ -347,8 +347,8 @@ FuncGraphPtr DoSignatureMetaFuncGraph::GenerateFuncGraph(const AbstractBasePtrLi
|
|||
|
||||
void RaiseExceptionForConvertRefDtype(const std::string &func_name, const std::string &ref_type,
|
||||
const std::string &target_type) {
|
||||
MS_LOG(EXCEPTION) << "Data type conversion of parameter is not supported, so data type " << ref_type
|
||||
<< " cannot be converted to data type " << target_type << " by inserting cast automatically.\n"
|
||||
MS_LOG(EXCEPTION) << "Data type conversion of 'Parameter' is not supported, so data type " << ref_type
|
||||
<< " cannot be converted to data type " << target_type << " automatically.\n"
|
||||
<< "For more details, please refer at "
|
||||
<< "https://www.mindspore.cn/docs/note/zh-CN/master/operator_list_implicit.html.";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,23 @@ FuncGraphPtr Map::GenerateLeafFunc(const size_t &args_size) {
|
|||
return ptrGraph;
|
||||
}
|
||||
|
||||
std::vector<std::string> Map::GetMapInputIndex(size_t num) {
|
||||
std::string error_index;
|
||||
std::string next_index;
|
||||
if (num == 1) {
|
||||
// The first element in Map is func_graph
|
||||
error_index = "first";
|
||||
next_index = "second";
|
||||
} else if (num == 2) {
|
||||
error_index = "second";
|
||||
next_index = "third";
|
||||
} else {
|
||||
error_index = std::to_string(num) + "th";
|
||||
next_index = std::to_string(num + 1) + "th";
|
||||
}
|
||||
return {error_index, next_index};
|
||||
}
|
||||
|
||||
AnfNodePtr Map::FullMakeList(const std::shared_ptr<List> &type, const FuncGraphPtr &func_graph,
|
||||
const AnfNodePtr &fn_arg, const ArgsPairList &arg_pairs) {
|
||||
MS_EXCEPTION_IF_NULL(func_graph);
|
||||
|
|
@ -73,21 +90,24 @@ AnfNodePtr Map::FullMakeList(const std::shared_ptr<List> &type, const FuncGraphP
|
|||
std::size_t size = type->elements().size();
|
||||
size_t num = 0;
|
||||
std::ostringstream oss;
|
||||
bool is_not_same =
|
||||
std::any_of(arg_pairs.begin(), arg_pairs.end(), [&num, size, &oss](const std::pair<AnfNodePtr, TypePtr> &item) {
|
||||
num++;
|
||||
auto lhs = std::dynamic_pointer_cast<List>(item.second);
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << (num - 1) << "th element in Map has wrong type, expected a List, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "The length of " << (num - 1) << "th List in Map is " << size << ", but the length of " << num
|
||||
<< "th List in Map is " << lhs->elements().size() << ".\n";
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
bool is_not_same = false;
|
||||
for (auto &item : arg_pairs) {
|
||||
num++;
|
||||
auto lhs = std::dynamic_pointer_cast<List>(item.second);
|
||||
std::vector<std::string> indexes = GetMapInputIndex(num);
|
||||
std::string error_index = indexes[0];
|
||||
std::string next_index = indexes[1];
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << error_index << " element in Map has wrong type, expected a List, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "\nThe length of the " << error_index << " element in Map is " << size << ", but the length of the "
|
||||
<< next_index << " element in Map is " << lhs->elements().size() << ".\n";
|
||||
is_not_same = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_not_same) {
|
||||
MS_LOG(EXCEPTION) << "The length of lists in Map must be the same. " << oss.str();
|
||||
}
|
||||
|
|
@ -133,21 +153,24 @@ AnfNodePtr Map::FullMakeTuple(const std::shared_ptr<Tuple> &type, const FuncGrap
|
|||
size_t size = type->elements().size();
|
||||
size_t num = 0;
|
||||
std::ostringstream oss;
|
||||
bool is_not_same =
|
||||
std::any_of(arg_pairs.begin(), arg_pairs.end(), [&num, size, &oss](const std::pair<AnfNodePtr, TypePtr> &item) {
|
||||
num++;
|
||||
auto lhs = std::dynamic_pointer_cast<Tuple>(item.second);
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << (num - 1) << "th element in Map has wrong type, expected a Tuple, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "The length of " << (num - 1) << "th Tuple in Map is " << size << ", but the length of " << num
|
||||
<< "th Tuple in Map is " << lhs->elements().size() << ".\n";
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
bool is_not_same = false;
|
||||
for (auto &item : arg_pairs) {
|
||||
num++;
|
||||
auto lhs = std::dynamic_pointer_cast<Tuple>(item.second);
|
||||
std::vector<std::string> indexes = GetMapInputIndex(num);
|
||||
std::string error_index = indexes[0];
|
||||
std::string next_index = indexes[1];
|
||||
if (lhs == nullptr) {
|
||||
MS_LOG(EXCEPTION) << "The " << error_index << " element in Map has wrong type, expected a Tuple, but got "
|
||||
<< item.second->ToString() << ".";
|
||||
}
|
||||
if (lhs->elements().size() != size) {
|
||||
oss << "\nThe length of the " << error_index << " element in Map is " << size << ", but the length of the "
|
||||
<< next_index << " element in Map is " << lhs->elements().size() << ".\n";
|
||||
is_not_same = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_not_same) {
|
||||
MS_LOG(EXCEPTION) << "The length of tuples in Map must be the same. " << oss.str();
|
||||
}
|
||||
|
|
@ -259,8 +282,18 @@ AnfNodePtr Map::Make(const FuncGraphPtr &func_graph, const AnfNodePtr &fn_arg, c
|
|||
oss << "There are " << (arg_pairs.size() + 1) << " inputs of `" << name_ << "`, corresponding type info:\n"
|
||||
<< trace::GetDebugInfo(func_graph->debug_info()) << ".\n";
|
||||
int64_t idx = 0;
|
||||
std::string str_index = "first";
|
||||
for (auto &item : arg_pairs) {
|
||||
oss << "The type of " << (++idx + 1) << "th argument in Map is: " << item.second->ToString() << ".\n";
|
||||
if (idx == 0) {
|
||||
// The first element in HyperMap is func_graph
|
||||
str_index = "second";
|
||||
} else if (idx == 1) {
|
||||
str_index = "third";
|
||||
} else {
|
||||
str_index = std::to_string(idx + 2) + "th";
|
||||
}
|
||||
++idx;
|
||||
oss << "The type of the " << str_index << " argument in Map is: " << item.second->ToString() << ".\n";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "The types of arguments in Map must be consistent, "
|
||||
<< "but the types of arguments are inconsistent.\n"
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "ir/dtype.h"
|
||||
#include "ir/meta_func_graph.h"
|
||||
|
|
@ -77,6 +78,7 @@ class Map : public MetaFuncGraph {
|
|||
AnfNodePtr FullMakeClass(const std::shared_ptr<Class> &type, const FuncGraphPtr &func_graph, const AnfNodePtr &fn_arg,
|
||||
const ArgsPairList &arg_pairs);
|
||||
AnfNodePtr Make(const FuncGraphPtr &graph, const AnfNodePtr &fn_arg, const ArgsPairList &arg_pairs);
|
||||
std::vector<std::string> GetMapInputIndex(size_t num);
|
||||
void Init() {
|
||||
if (fn_leaf_ != nullptr) {
|
||||
name_ = "map[" + fn_leaf_->name() + "]";
|
||||
|
|
|
|||
|
|
@ -43,18 +43,23 @@ FuncGraphPtr ZipOperation::GenerateFuncGraph(const AbstractBasePtrList &args_spe
|
|||
MS_LOG(EXCEPTION) << "The zip operator must have at least 1 argument, but the size of arguments is 0.";
|
||||
}
|
||||
|
||||
auto all_is_sequence =
|
||||
std::all_of(args_spec_list.begin(), args_spec_list.end(), [](const AbstractBasePtr &abs) -> bool {
|
||||
MS_EXCEPTION_IF_NULL(abs);
|
||||
return abs->isa<AbstractSequence>();
|
||||
});
|
||||
if (!all_is_sequence) {
|
||||
std::ostringstream oss;
|
||||
int64_t idx = 0;
|
||||
for (auto &item : args_spec_list) {
|
||||
oss << "the " << ++idx << " argument is: " << item->ToString() << "\n";
|
||||
for (size_t idx = 0; idx < args_spec_list.size(); idx++) {
|
||||
auto abs = args_spec_list[idx];
|
||||
if (!abs->isa<AbstractSequence>()) {
|
||||
std::string error_index;
|
||||
if (idx == 0) {
|
||||
error_index = "first";
|
||||
} else if (idx == 1) {
|
||||
error_index = "second";
|
||||
} else if (idx == 2) {
|
||||
error_index = "third";
|
||||
} else {
|
||||
error_index = std::to_string(idx) + "th";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "For 'zip', the all inputs must be list or tuple, but the " << error_index
|
||||
<< " argument is not list or tuple.\nThe " << error_index
|
||||
<< " argument detail: " << args_spec_list[idx]->ToString() << ".";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "The all inputs of zip operator must be sequence. But " << oss.str();
|
||||
}
|
||||
|
||||
auto min_abs = std::min_element(
|
||||
|
|
|
|||
|
|
@ -57,6 +57,19 @@ AbstractBasePtr InferImplTupleOrListEqual(const std::string &op_name, const Abst
|
|||
return std::make_shared<AbstractScalar>(*x_value == *y_value);
|
||||
}
|
||||
|
||||
void CheckSlideInput(const ValuePtr &arg_value) {
|
||||
MS_EXCEPTION_IF_NULL(arg_value);
|
||||
auto value_type = arg_value->type();
|
||||
std::string str_type;
|
||||
if (value_type) {
|
||||
str_type = value_type->ToString();
|
||||
} else {
|
||||
str_type = "AnyValue";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "The type of inputs in range operator only support int64 number. "
|
||||
<< "But get a " << str_type << " number.";
|
||||
}
|
||||
|
||||
void CalcSlidePara(const AbstractBasePtrList &args_spec_list, SlideInfo *slide) {
|
||||
int64_t arg1 = 0;
|
||||
int64_t arg2 = 0;
|
||||
|
|
@ -64,8 +77,7 @@ void CalcSlidePara(const AbstractBasePtrList &args_spec_list, SlideInfo *slide)
|
|||
MS_EXCEPTION_IF_NULL(args_spec_list[0]);
|
||||
auto arg_value = args_spec_list[0]->BuildValue();
|
||||
if (!arg_value->isa<Int64Imm>()) {
|
||||
MS_LOG(EXCEPTION) << "The type of inputs in range operator only support int64 number. "
|
||||
<< "But get a " << arg_value->type() << " number.";
|
||||
CheckSlideInput(arg_value);
|
||||
}
|
||||
arg1 = GetValue<int64_t>(arg_value);
|
||||
}
|
||||
|
|
@ -74,8 +86,7 @@ void CalcSlidePara(const AbstractBasePtrList &args_spec_list, SlideInfo *slide)
|
|||
MS_EXCEPTION_IF_NULL(args_spec_list[1]);
|
||||
auto arg_value = args_spec_list[1]->BuildValue();
|
||||
if (!arg_value->isa<Int64Imm>()) {
|
||||
MS_LOG(EXCEPTION) << "The type of inputs in range operator only support int64 number. "
|
||||
<< "But get a " << arg_value->type() << " number.";
|
||||
CheckSlideInput(arg_value);
|
||||
}
|
||||
arg2 = GetValue<int64_t>(arg_value);
|
||||
}
|
||||
|
|
@ -84,8 +95,7 @@ void CalcSlidePara(const AbstractBasePtrList &args_spec_list, SlideInfo *slide)
|
|||
MS_EXCEPTION_IF_NULL(args_spec_list[2]);
|
||||
auto arg_value = args_spec_list[2]->BuildValue();
|
||||
if (!arg_value->isa<Int64Imm>()) {
|
||||
MS_LOG(EXCEPTION) << "The type of inputs in range operator only support int64 number. "
|
||||
<< "But get a " << arg_value->type() << " number.";
|
||||
CheckSlideInput(arg_value);
|
||||
}
|
||||
slide->step = GetValue<int64_t>(arg_value);
|
||||
slide->start = arg1;
|
||||
|
|
@ -437,8 +447,15 @@ AbstractBasePtr InferImplTupleDiv(const AnalysisEnginePtr &, const PrimitivePtr
|
|||
|
||||
for (size_t i = 0; i < div_shape_data.size(); i++) {
|
||||
if (div_shape_data[i]->cast<Int64ImmPtr>() == nullptr) {
|
||||
auto value_type = div_shape_data[i]->type();
|
||||
std::string str_type;
|
||||
if (value_type) {
|
||||
str_type = value_type->ToString();
|
||||
} else {
|
||||
str_type = "AnyValue";
|
||||
}
|
||||
MS_LOG(EXCEPTION) << "The data type of inputs of 'tuple_div' operator should be an int64 number, but got a "
|
||||
<< div_shape_data[i]->type() << " number " << div_shape_data[i]->ToString() << ".";
|
||||
<< str_type << " number " << div_shape_data[i]->ToString() << ".";
|
||||
}
|
||||
int64_t shapex_value = GetValue<int64_t>(shape_x_data[i]);
|
||||
int64_t div_value = GetValue<int64_t>(div_shape_data[i]);
|
||||
|
|
@ -545,8 +562,13 @@ AbstractBasePtr InferImplMakeSlice(const AnalysisEnginePtr &, const PrimitivePtr
|
|||
slice_args.push_back(scalar_index->ToAbstract());
|
||||
} else {
|
||||
auto type = scalar_value->type();
|
||||
MS_EXCEPTION(TypeError) << "Slice indices must be integers or bool. But got a " << type->ToString()
|
||||
<< " number.";
|
||||
std::string str_type;
|
||||
if (type) {
|
||||
str_type = type->ToString();
|
||||
} else {
|
||||
str_type = "AnyValue";
|
||||
}
|
||||
MS_EXCEPTION(TypeError) << "Slice indices must be integers or bool. But got a " << str_type << " number.";
|
||||
}
|
||||
} else if (args_spec_list[index]->isa<AbstractTensor>()) {
|
||||
auto arg = args_spec_list[index]->cast<AbstractTensorPtr>();
|
||||
|
|
@ -608,7 +630,7 @@ AbstractBasePtr InferImplMakeRange(const AnalysisEnginePtr &, const PrimitivePtr
|
|||
if (slide.start <= slide.stop) {
|
||||
if (slide.step <= 0) {
|
||||
MS_LOG(EXCEPTION) << "For 'range', while the argument 'start' " << slide.start
|
||||
<< " less than or equal to the argument 'stop' " << slide.stop << ", "
|
||||
<< " is less than or equal to the argument 'stop' " << slide.stop << ", "
|
||||
<< "the argument 'step' must be more than 0, but the argument 'step' is " << slide.step << ".";
|
||||
}
|
||||
|
||||
|
|
@ -621,9 +643,9 @@ AbstractBasePtr InferImplMakeRange(const AnalysisEnginePtr &, const PrimitivePtr
|
|||
}
|
||||
} else {
|
||||
if (slide.step >= 0) {
|
||||
MS_LOG(EXCEPTION) << "For 'range', while the argument 'start' " << slide.start << " more than the argument 'stop'"
|
||||
<< " " << slide.stop << ", the argument 'step' must be less than 0, but the argument 'step' is "
|
||||
<< slide.step << ".";
|
||||
MS_LOG(EXCEPTION) << "For 'range', while the argument 'start' " << slide.start << " is more than the argument "
|
||||
<< "'stop' " << slide.stop << ", the argument 'step' must be less than 0, "
|
||||
<< "but the argument 'step' is " << slide.step << ".";
|
||||
}
|
||||
|
||||
for (int64_t i = slide.start; i > slide.stop; i += slide.step) {
|
||||
|
|
|
|||
|
|
@ -165,6 +165,6 @@ def test_map_param_cast():
|
|||
input_me_x = Tensor(np.random.randn(2, 3, 4, 5).astype(np.float64))
|
||||
|
||||
net = MapNet()
|
||||
with pytest.raises(Exception, match="Data type conversion of parameter is not supported"):
|
||||
with pytest.raises(Exception, match="Data type conversion of 'Parameter' is not supported"):
|
||||
ret = net(input_me_x)
|
||||
print("ret:", ret)
|
||||
|
|
|
|||
|
|
@ -80,6 +80,6 @@ def test_zip_operation_args_type():
|
|||
|
||||
x = Tensor.from_numpy(np.ones([1], np.float32))
|
||||
net = AssignInZipLoop()
|
||||
with pytest.raises(Exception, match="The all inputs of zip operator must be sequence"):
|
||||
with pytest.raises(Exception, match="For 'zip', the all inputs must be list or tuple."):
|
||||
out = net(x)
|
||||
assert np.all(out.asnumpy() == 1)
|
||||
|
|
|
|||
|
|
@ -271,4 +271,4 @@ def test_assign_check_in_sig():
|
|||
y = Tensor(3, ms.uint8)
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
net(x, y)
|
||||
assert "Data type conversion of parameter is not supported" in e.value.args[0]
|
||||
assert "Data type conversion of 'Parameter' is not supported" in e.value.args[0]
|
||||
|
|
|
|||
Loading…
Reference in New Issue