Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
835572af
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
835572af
编写于
8月 31, 2017
作者:
Q
qijun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make LODTensor class instead struct
上级
03978442
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
12 deletion
+20
-12
paddle/framework/lod_tensor.h
paddle/framework/lod_tensor.h
+10
-2
paddle/framework/lod_tensor_test.cc
paddle/framework/lod_tensor_test.cc
+10
-10
未找到文件。
paddle/framework/lod_tensor.h
浏览文件 @
835572af
...
...
@@ -48,11 +48,19 @@ bool operator==(const LOD& a, const LOD& b);
* LODTensor (Level of details Tensor)
* see https://en.wikipedia.org/wiki/Level_of_details for reference.
*/
struct
LODTensor
{
class
LODTensor
{
public:
LODTensor
()
{}
LODTensor
(
const
LOD
&
lod
,
Tensor
*
t
)
:
lod_
(
lod
),
tensor_
(
t
)
{}
void
set_lod
(
const
LOD
&
lod
)
{
lod_
=
lod
;
}
void
set_tensor
(
Tensor
*
tensor
)
{
tensor_
=
tensor
;
}
Tensor
&
tensor
()
{
return
*
tensor_
;
}
LOD
lod
()
{
return
lod_
;
}
/*
* Get a element from LOD.
*/
...
...
@@ -91,7 +99,7 @@ struct LODTensor {
*/
void
SliceInLevel
(
size_t
level
,
size_t
elem_begin
,
size_t
elem_end
);
p
ublic
:
p
rivate
:
LOD
lod_
;
Tensor
*
tensor_
;
// not owned
};
...
...
paddle/framework/lod_tensor_test.cc
浏览文件 @
835572af
...
...
@@ -40,8 +40,8 @@ class LODTensorTester : public ::testing::Test {
// malloc memory
tensor
.
mutable_data
<
float
>
(
place
);
lod_tensor
.
lod_
=
lod
;
lod_tensor
.
tensor_
=
&
tensor
;
lod_tensor
.
set_lod
(
lod
)
;
lod_tensor
.
set_tensor
(
&
tensor
)
;
}
protected:
...
...
@@ -65,8 +65,8 @@ TEST_F(LODTensorTester, SliceLevels) {
new_lod_tensor
.
SliceLevels
(
level
,
level
+
1
);
ASSERT_EQ
(
new_lod_tensor
.
NumLevels
(),
1UL
);
ASSERT_EQ
(
new_lod_tensor
.
NumElements
(
0
),
lod_tensor
.
NumElements
(
level
));
ASSERT_EQ
(
new_lod_tensor
.
tensor
_
->
data
<
float
>
(),
lod_tensor
.
tensor
_
->
data
<
float
>
());
ASSERT_EQ
(
new_lod_tensor
.
tensor
().
data
<
float
>
(),
lod_tensor
.
tensor
().
data
<
float
>
());
}
// slice 2 level
for
(
size_t
level
=
0
;
level
<
2UL
;
++
level
)
{
...
...
@@ -75,8 +75,8 @@ TEST_F(LODTensorTester, SliceLevels) {
ASSERT_EQ
(
new_lod_tensor
.
NumLevels
(),
2UL
);
ASSERT_EQ
(
new_lod_tensor
.
NumElements
(
0
),
lod_tensor
.
NumElements
(
level
));
ASSERT_EQ
(
new_lod_tensor
.
NumElements
(
1
),
lod_tensor
.
NumElements
(
level
+
1
));
ASSERT_EQ
(
new_lod_tensor
.
tensor
_
->
data
<
float
>
(),
lod_tensor
.
tensor
_
->
data
<
float
>
());
ASSERT_EQ
(
new_lod_tensor
.
tensor
().
data
<
float
>
(),
lod_tensor
.
tensor
().
data
<
float
>
());
}
}
...
...
@@ -88,8 +88,8 @@ TEST_F(LODTensorTester, SliceInLevel) {
EXPECT_EQ
(
new_lod_tensor
.
NumElements
(
0
),
2UL
);
EXPECT_EQ
(
new_lod_tensor
.
NumElements
(
1
),
4UL
);
EXPECT_EQ
(
new_lod_tensor
.
NumElements
(
2
),
8UL
);
ASSERT_EQ
(
new_lod_tensor
.
tensor
_
->
data
<
float
>
(),
lod_tensor
.
tensor
_
->
data
<
float
>
());
ASSERT_EQ
(
new_lod_tensor
.
tensor
().
data
<
float
>
(),
lod_tensor
.
tensor
().
data
<
float
>
());
level
=
1
;
new_lod_tensor
=
lod_tensor
;
...
...
@@ -97,8 +97,8 @@ TEST_F(LODTensorTester, SliceInLevel) {
ASSERT_EQ
(
new_lod_tensor
.
NumLevels
(),
2UL
);
ASSERT_EQ
(
new_lod_tensor
.
NumElements
(
0
),
2UL
);
ASSERT_EQ
(
new_lod_tensor
.
NumElements
(
1
),
4UL
);
ASSERT_EQ
(
new_lod_tensor
.
tensor
_
->
data
<
float
>
(),
lod_tensor
.
tensor
_
->
data
<
float
>
());
ASSERT_EQ
(
new_lod_tensor
.
tensor
().
data
<
float
>
(),
lod_tensor
.
tensor
().
data
<
float
>
());
}
}
// namespace framework
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录