Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
SummerGao.
Paddle
提交
ce1d98e0
P
Paddle
项目概览
SummerGao.
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
0
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ce1d98e0
编写于
12月 15, 2016
作者:
H
hedaoyuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a Tensor to use as a Function argument
上级
a1d2abc1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
23 deletion
+35
-23
paddle/math/Function.h
paddle/math/Function.h
+11
-1
paddle/math/cross_map_normal_op.cpp
paddle/math/cross_map_normal_op.cpp
+17
-20
paddle/math/tests/test_matrixCompare.cpp
paddle/math/tests/test_matrixCompare.cpp
+7
-2
未找到文件。
paddle/math/Function.h
浏览文件 @
ce1d98e0
...
...
@@ -40,7 +40,17 @@ struct MatrixT<DEVICE_TYPE_GPU> {
using
type
=
GpuMatrix
;
};
typedef
std
::
vector
<
Matrix
>
Arguments
;
typedef
std
::
vector
<
size_t
>
Dims
;
class
Tensor
{
public:
Tensor
(
real
*
data
,
const
Dims
&
dim
)
:
buf_
(
data
),
dims_
(
dim
)
{}
real
*
buf_
;
Dims
dims_
;
};
typedef
std
::
vector
<
Tensor
>
Arguments
;
class
FuncConfig
{
public:
...
...
paddle/math/cross_map_normal_op.cpp
浏览文件 @
ce1d98e0
...
...
@@ -144,26 +144,23 @@ public:
CHECK_EQ
(
2
,
outputs
.
size
());
CHECK_EQ
(
0
,
inouts
.
size
());
auto
input
=
dynamic_cast
<
const
typename
MatrixT
<
Device
>::
type
&>
(
inputs
[
0
]);
auto
output
=
dynamic_cast
<
const
typename
MatrixT
<
Device
>::
type
&>
(
outputs
[
0
]);
auto
denom
=
dynamic_cast
<
const
typename
MatrixT
<
Device
>::
type
&>
(
outputs
[
1
]);
CHECK
(
input
.
isContiguous
());
CHECK
(
output
.
isContiguous
());
CHECK
(
denom
.
isContiguous
());
CHECK_EQ
(
output
.
getHeight
(),
input
.
getHeight
());
CHECK_EQ
(
output
.
getWidth
(),
input
.
getWidth
());
CHECK_EQ
(
output
.
getHeight
(),
denom
.
getHeight
());
CHECK_EQ
(
output
.
getWidth
(),
denom
.
getWidth
());
// CrossMapNormal<Device> cross;
// need:
// size_t channels,
// size_t imgSizeH,
// size_t imgSizeW,
// cross(output, denom, input, );
CHECK_EQ
(
inputs
[
0
].
dims_
.
size
(),
4
);
for
(
size_t
i
=
0
;
i
<
inputs
[
0
].
dims_
.
size
();
i
++
)
{
CHECK_EQ
(
inputs
[
0
].
dims_
[
i
],
outputs
[
0
].
dims_
[
i
]);
CHECK_EQ
(
inputs
[
0
].
dims_
[
i
],
outputs
[
1
].
dims_
[
i
]);
}
size_t
samples
=
inputs
[
0
].
dims_
[
0
];
size_t
channels
=
inputs
[
0
].
dims_
[
1
];
size_t
height
=
inputs
[
0
].
dims_
[
2
];
size_t
width
=
inputs
[
0
].
dims_
[
3
];
size_t
imageSize
=
channels
*
height
*
width
;
CpuMatrix
input
(
inputs
[
0
].
buf_
,
samples
,
imageSize
);
CpuMatrix
output
(
outputs
[
0
].
buf_
,
samples
,
imageSize
);
CpuMatrix
denom
(
outputs
[
1
].
buf_
,
samples
,
imageSize
);
CrossMapNormal
<
Device
>
cross
;
cross
(
output
,
denom
,
input
,
channels
,
height
,
width
,
size_
,
scale_
,
pow_
);
}
private:
...
...
paddle/math/tests/test_matrixCompare.cpp
浏览文件 @
ce1d98e0
...
...
@@ -1288,12 +1288,17 @@ void testCrossMapNormalFwd(
FunctionBase
*
cpu
=
FunctionBase
::
funcRegistrar_
.
createByType
(
FUNC_NAME
(
CrossMapNormal
,
CPU
));
cpu
->
init
(
config
);
// cpu->calc();
Dims
dims
{
(
size_t
)
numSamples
,
(
size_t
)
channels
,
(
size_t
)
imgSizeH
,
(
size_t
)
imgSizeW
};
cpu
->
calc
({
Tensor
(
inputs
.
getData
(),
dims
)},
{
Tensor
(
outputs
.
getData
(),
dims
),
Tensor
(
denoms
.
getData
(),
dims
)},
{});
#if 0
CrossMapNormal<DEVICE_TYPE_CPU> cpuCross;
cpuCross(
outputs, denoms, inputs, channels, imgSizeH, imgSizeW, sizeX, scale, pow);
#endif
CrossMapNormal
<
DEVICE_TYPE_GPU
>
gpuCross
;
gpuCross
(
outputsGpu
,
denomsGpu
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录