Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
ec2ba242
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ec2ba242
编写于
8月 17, 2017
作者:
H
hedaoyuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix GemmConvFunction.
上级
53b0e427
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
43 deletion
+41
-43
paddle/function/CMakeLists.txt
paddle/function/CMakeLists.txt
+2
-0
paddle/function/GemmConvOp.cpp
paddle/function/GemmConvOp.cpp
+39
-43
未找到文件。
paddle/function/CMakeLists.txt
浏览文件 @
ec2ba242
...
...
@@ -4,6 +4,8 @@ file(GLOB cpp_files . *Op.cpp)
list
(
APPEND h_files Function.h
)
list
(
APPEND cpp_files Function.cpp
)
list
(
APPEND cpp_files BufferArg.cpp
)
list
(
APPEND cpp_files GemmFunctor.cpp
)
list
(
APPEND cpp_files EigenGemm.cpp
)
if
(
WITH_GPU
)
file
(
GLOB cu_files . *OpGpu.cu
)
...
...
paddle/function/GemmConvOp.cpp
浏览文件 @
ec2ba242
...
...
@@ -85,7 +85,6 @@ public:
}
Im2ColFunctor
<
kCFO
,
Device
,
real
>
im2col
;
GemmFunctor
<
Device
,
real
>
gemm
;
size_t
inputOffset
=
imShape
.
getElements
();
size_t
outputOffset
=
(
outputChannels
/
groups_
)
*
outputHeight
*
outputWidth
;
...
...
@@ -108,19 +107,19 @@ public:
int
M
=
outputChannels
/
groups_
;
int
N
=
outputHeight
*
outputWidth
;
int
K
=
inputChannels
/
groups_
*
filterHeight
*
filterWidth
;
gemm
(
CblasNoTrans
,
CblasNoTrans
,
M
,
N
,
K
,
1.0
f
,
filterData
+
g
*
filterOffset
,
K
,
colData
,
N
,
beta
,
outputData
+
g
*
outputOffset
,
N
);
BlasGemm
<
Device
,
real
>::
compute
(
false
,
false
,
M
,
N
,
K
,
1.0
f
,
filterData
+
g
*
filterOffset
,
K
,
colData
,
N
,
beta
,
outputData
+
g
*
outputOffset
,
N
);
}
inputData
+=
inputChannels
*
inputHeight
*
inputWidth
;
outputData
+=
outputChannels
*
outputHeight
*
outputWidth
;
...
...
@@ -188,8 +187,6 @@ public:
}
Col2ImFunctor
<
kCFO
,
Device
,
real
>
col2im
;
GemmFunctor
<
Device
,
real
>
gemm
;
size_t
inputOffset
=
imShape
.
getElements
();
size_t
outputOffset
=
(
outputChannels
/
groups_
)
*
outputHeight
*
outputWidth
;
...
...
@@ -205,19 +202,19 @@ public:
colData
=
inputGrad
+
g
*
inputOffset
;
scale
=
1.0
f
;
}
gemm
(
CblasTrans
,
CblasNoTrans
,
M
,
N
,
K
,
1.0
f
,
filterData
+
g
*
filterOffset
,
M
,
outputGrad
+
g
*
outputOffset
,
N
,
scale
,
colData
,
N
);
BlasGemm
<
Device
,
real
>::
compute
(
true
,
false
,
M
,
N
,
K
,
1.0
f
,
filterData
+
g
*
filterOffset
,
M
,
outputGrad
+
g
*
outputOffset
,
N
,
scale
,
colData
,
N
);
if
(
needIm2col
)
{
col2im
(
inputGrad
+
g
*
inputOffset
,
imShape
,
...
...
@@ -299,7 +296,6 @@ public:
}
Im2ColFunctor
<
kCFO
,
Device
,
real
>
im2col
;
GemmFunctor
<
Device
,
real
>
gemm
;
size_t
inputOffset
=
imShape
.
getElements
();
size_t
outputOffset
=
(
outputChannels
/
groups_
)
*
outputHeight
*
outputWidth
;
...
...
@@ -321,19 +317,19 @@ public:
int
M
=
outputChannels
/
groups_
;
int
K
=
outputHeight
*
outputWidth
;
int
N
=
inputChannels
/
groups_
*
filterHeight
*
filterWidth
;
gemm
(
CblasNoTrans
,
CblasTrans
,
M
,
N
,
K
,
1.0
f
,
outputGrad
+
g
*
outputOffset
,
K
,
colData
,
K
,
i
==
0
?
beta
:
1.0
f
,
filterGrad
+
g
*
filterOffset
,
N
);
BlasGemm
<
Device
,
real
>::
compute
(
false
,
true
,
M
,
N
,
K
,
1.0
f
,
outputGrad
+
g
*
outputOffset
,
K
,
colData
,
K
,
i
==
0
?
beta
:
1.0
f
,
filterGrad
+
g
*
filterOffset
,
N
);
}
inputData
+=
inputChannels
*
inputHeight
*
inputWidth
;
outputGrad
+=
outputChannels
*
outputHeight
*
outputWidth
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录