Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
8c4bcb84
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8c4bcb84
编写于
6月 09, 2020
作者:
B
BowenK
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
skip operations which are not supported in the backend in ME
上级
5958c4ab
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
2 deletion
+40
-2
mindspore/ops/operations/array_ops.py
mindspore/ops/operations/array_ops.py
+16
-0
mindspore/ops/operations/math_ops.py
mindspore/ops/operations/math_ops.py
+7
-0
mindspore/ops/primitive.py
mindspore/ops/primitive.py
+17
-2
未找到文件。
mindspore/ops/operations/array_ops.py
浏览文件 @
8c4bcb84
...
...
@@ -184,6 +184,13 @@ class Cast(PrimitiveWithInfer):
"""init Cast"""
self
.
init_prim_io_names
(
inputs
=
[
'x'
,
'dst_type'
],
outputs
=
[
'output'
])
def
check_elim
(
self
,
x
,
dtype
):
if
isinstance
(
x
,
Tensor
):
if
x
.
dtype
()
==
dtype
:
return
(
True
,
x
)
return
(
False
,
None
)
raise
ValueError
(
"Expecting (Tensor, dtype), got : {}"
.
format
(
inputs
))
def
__infer__
(
self
,
x
,
t
):
src_type
=
x
[
'dtype'
]
dst_type
=
t
[
'value'
]
...
...
@@ -1310,6 +1317,15 @@ class Tile(PrimitiveWithInfer):
"""init Tile"""
self
.
init_prim_io_names
(
inputs
=
[
'x'
,
'multiples'
],
outputs
=
[
'output'
])
def
check_elim
(
self
,
base_tensor
,
multiplier
):
if
(
not
isinstance
(
base_tensor
,
Tensor
))
or
(
not
isinstance
(
multiplier
,
tuple
)):
raise
ValueError
(
"Expecting (Tensor, tuple), got: ({}, {})"
.
format
(
base_tensor
,
multiplier
))
def
is_all_zeros
(
v_tuple
):
return
all
(
v
==
1
for
v
in
v_tuple
)
if
is_all_zeros
(
multiplier
):
return
(
True
,
base_tensor
)
return
(
False
,
None
)
def
__infer__
(
self
,
x
,
multiples
):
multiples_v
=
multiples
[
'value'
]
x_shp
=
x
[
'shape'
]
...
...
mindspore/ops/operations/math_ops.py
浏览文件 @
8c4bcb84
...
...
@@ -705,6 +705,13 @@ class AddN(PrimitiveWithInfer):
def
__init__
(
self
):
self
.
init_prim_io_names
(
inputs
=
[
"inputs"
],
outputs
=
[
"sum"
])
def
check_elim
(
self
,
inputs
):
if
len
(
inputs
)
!=
1
:
return
(
False
,
None
)
if
isinstance
(
inputs
[
0
],
Tensor
):
return
(
True
,
inputs
[
0
])
raise
TypeError
(
"Expecting Tensor, got : {}"
.
format
(
type
(
inputs
[
0
])))
def
infer_shape
(
self
,
inputs
):
cls_name
=
self
.
name
validator
.
check_integer
(
"inputs"
,
len
(
inputs
),
1
,
Rel
.
GE
,
cls_name
)
...
...
mindspore/ops/primitive.py
浏览文件 @
8c4bcb84
...
...
@@ -140,9 +140,24 @@ class Primitive(Primitive_):
return
self
.
attrs
[
item
]
raise
AttributeError
(
item
)
def
check_elim
(
self
,
*
args
):
"""
Check whether or not certain inputs should go into backend. Subclass in need should override this method.
Args:
Same as arguments of current Primitive
Returns:
A tuple of two elements, first element indicates whether or not we should filter out current arguments;
seconde element is the output in case where we should filter out the arguments.
"""
return
(
False
,
None
)
def
__call__
(
self
,
*
args
):
output
=
_run_op
(
self
,
self
.
name
,
args
)
return
output
should_elim
,
output
=
self
.
check_elim
(
*
args
)
if
should_elim
:
return
output
return
_run_op
(
self
,
self
.
name
,
args
)
def
__getstate__
(
self
):
return
self
.
__dict__
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录