Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
flybirding10011
DI-treetensor
提交
a44c0b66
D
DI-treetensor
项目概览
flybirding10011
/
DI-treetensor
与 Fork 源项目一致
Fork自
OpenDILab开源决策智能平台 / DI-treetensor
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DI-treetensor
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a44c0b66
编写于
9月 29, 2021
作者:
HansBug
😆
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dev(hansbug): optimize TensorMethod and Tensor
上级
a5a6704c
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
29 addition
and
14 deletion
+29
-14
treetensor/torch/tensor/attr.py
treetensor/torch/tensor/attr.py
+11
-5
treetensor/torch/tensor/tensor.py
treetensor/torch/tensor/tensor.py
+18
-9
未找到文件。
treetensor/torch/tensor/attr.py
浏览文件 @
a44c0b66
from
treevalue
import
tree_class
from
treevalue
import
method_treelize
,
TreeValue
from
treevalue.utils
import
post_process
from
.tensor
import
Tensor
from
..base
import
Torch
from
..base
import
Torch
,
auto_torch
from
..tensor
import
Tensor
from
...utils
import
replaceable_partial
auto_tensor
=
replaceable_partial
(
auto_torch
,
cls
=
Tensor
)
@
tree_class
(
return_type
=
Tensor
)
class
TensorMethod
(
Torch
):
pass
@
post_process
(
auto_tensor
)
@
method_treelize
(
return_type
=
TreeValue
,
rise
=
True
)
def
__call__
(
self
,
*
args
,
**
kwargs
):
return
self
(
*
args
,
**
kwargs
)
treetensor/torch/tensor/tensor.py
浏览文件 @
a44c0b66
from
functools
import
wraps
import
numpy
as
np
import
torch
from
treevalue
import
method_treelize
,
TreeValue
...
...
@@ -64,17 +66,24 @@ class Tensor(Torch, metaclass=clsmeta(_to_tensor, allow_dict=True)):
def
__get_attr
(
self
,
key
):
return
getattr
(
self
,
key
)
def
_attr_extern
(
self
,
key
):
tree
=
self
.
__get_attr
(
key
)
if
tree
.
map
(
lambda
x
:
torch
.
is_tensor
(
x
)).
all
():
type_
=
Tensor
elif
tree
.
map
(
lambda
x
:
callable
(
x
)).
all
():
def
_attr_extern
(
self
,
name
):
tree
=
self
.
__get_attr
(
name
)
if
hasattr
(
torch
.
Tensor
,
name
)
and
not
name
.
startswith
(
'_'
)
\
and
callable
(
getattr
(
torch
.
Tensor
,
name
)):
from
.attr
import
TensorMethod
type_
=
TensorMethod
else
:
type_
=
Object
tree
=
tree
.
type
(
TensorMethod
)
return
tree
.
type
(
type_
)
@
wraps
(
getattr
(
torch
,
name
),
assigned
=
(
'__name__'
,
'__qualname__'
),
updated
=
())
def
_new_func
(
*
args
,
**
kwargs
):
result
=
tree
(
*
args
,
**
kwargs
)
return
self
if
name
.
endswith
(
'_'
)
else
result
_new_func
.
__self__
=
self
return
_new_func
elif
tree
.
map
(
lambda
x
:
torch
.
is_tensor
(
x
)).
all
():
return
tree
.
type
(
Tensor
)
else
:
return
tree
@
doc_from_base
()
@
method_treelize
(
return_type
=
ndarray
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录