Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
flybirding10011
DI-treetensor
提交
61e7ee05
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,发现更多精彩内容 >>
提交
61e7ee05
编写于
10月 24, 2021
作者:
HansBug
😆
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
release(hansbug): version to 0.1.0
上级
75b7a2e2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
43 deletion
+22
-43
treetensor/common/wrappers.py
treetensor/common/wrappers.py
+8
-40
treetensor/config/meta.py
treetensor/config/meta.py
+1
-1
treetensor/torch/tensor.py
treetensor/torch/tensor.py
+13
-2
未找到文件。
treetensor/common/wrappers.py
浏览文件 @
61e7ee05
from
collections
import
namedtuple
from
functools
import
wraps
from
itertools
import
chain
from
operator
import
itemgetter
from
treevalue
import
TreeValue
from
treevalue
import
reduce_
as
treevalue_reduce
from
treevalue
import
TreeValue
,
walk
__all__
=
[
'
kwreduce'
,
'ireduce'
,
'v
reduce'
,
'
i
reduce'
,
'return_self'
,
]
def
kwreduce
(
rfunc
):
def
_decorator
(
func
):
@
wraps
(
func
)
def
_new_func
(
*
args
,
**
kwargs
):
_result
=
func
(
*
args
,
**
kwargs
)
if
isinstance
(
_result
,
TreeValue
):
return
treevalue_reduce
(
_result
,
rfunc
)
else
:
return
_result
return
_new_func
return
_decorator
def
vreduce
(
rfunc
):
return
kwreduce
(
lambda
**
kws
:
rfunc
(
kws
.
values
()))
def
ireduce
(
rfunc
,
piter
=
None
):
_IterReduceWrapper
=
namedtuple
(
"_IterReduceWrapper"
,
[
'v'
])
piter
=
piter
or
(
lambda
x
:
x
)
def
_reduce_func
(
values
):
_list
=
[]
for
item
in
values
:
if
isinstance
(
item
,
_IterReduceWrapper
):
_list
.
append
(
item
.
v
)
else
:
_list
.
append
([
item
])
return
_IterReduceWrapper
(
chain
(
*
_list
))
def
_decorator
(
func
):
rifunc
=
vreduce
(
_reduce_func
)(
func
)
@
wraps
(
func
)
def
_new_func
(
*
args
,
**
kwargs
):
_iw
=
rifunc
(
*
args
,
**
kwargs
)
if
isinstance
(
_iw
,
_IterReduceWrapper
):
return
rfunc
(
piter
(
_iw
.
v
))
result
=
func
(
*
args
,
**
kwargs
)
if
isinstance
(
result
,
TreeValue
):
it
=
map
(
itemgetter
(
1
),
walk
(
result
,
include_nodes
=
False
))
return
rfunc
(
piter
(
it
))
else
:
return
_iw
return
result
return
_new_func
...
...
treetensor/config/meta.py
浏览文件 @
61e7ee05
...
...
@@ -7,7 +7,7 @@ Overview:
__TITLE__
=
"DI-treetensor"
#: Version of this project.
__VERSION__
=
"0.
0.1
"
__VERSION__
=
"0.
1.0
"
#: Short description of the project, will be included in ``setup.py``.
__DESCRIPTION__
=
'A flexible, generalized tree-based tensor structure.'
...
...
treetensor/torch/tensor.py
浏览文件 @
61e7ee05
import
numpy
as
np
import
torch
as
pytorch
from
hbutils.reflection
import
post_process
from
treevalue
import
method_treelize
,
TreeValue
from
treevalue
import
method_treelize
,
TreeValue
,
typetrans
from
.base
import
Torch
,
rmreduce
,
post_reduce
,
auto_reduce
from
.size
import
Size
...
...
@@ -15,7 +15,18 @@ __all__ = [
]
doc_from_base
=
replaceable_partial
(
original_doc_from_base
,
base
=
pytorch
.
Tensor
)
_TorchProxy
,
_InstanceTorchProxy
=
get_tree_proxy
(
pytorch
.
Tensor
)
def
_auto_tensor
(
t
):
if
isinstance
(
t
,
TreeValue
):
t
=
typetrans
(
t
,
Object
)
if
t
.
map
(
lambda
x
,
_
:
pytorch
.
is_tensor
(
x
)).
all
():
return
typetrans
(
t
,
Tensor
)
return
t
_TorchProxy
,
_InstanceTorchProxy
=
get_tree_proxy
(
pytorch
.
Tensor
,
_auto_tensor
)
def
_to_tensor
(
data
,
*
args
,
**
kwargs
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录