Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
ad8bbaf0
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ad8bbaf0
编写于
10月 04, 2017
作者:
D
Dmitry Kurtaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Multidimensional eltwise layer.
Fixed fully-connected layer axis.
上级
2a253772
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
8 deletion
+22
-8
modules/dnn/src/layers/eltwise_layer.cpp
modules/dnn/src/layers/eltwise_layer.cpp
+8
-3
modules/dnn/src/layers/fully_connected_layer.cpp
modules/dnn/src/layers/fully_connected_layer.cpp
+9
-5
modules/dnn/test/test_layers.cpp
modules/dnn/test/test_layers.cpp
+5
-0
未找到文件。
modules/dnn/src/layers/eltwise_layer.cpp
浏览文件 @
ad8bbaf0
...
...
@@ -119,6 +119,8 @@ public:
EltwiseOp
op
;
int
nstripes
;
const
ActivationLayer
*
activ
;
int
channels
;
size_t
planeSize
;
EltwiseInvoker
()
:
srcs
(
0
),
nsrcs
(
0
),
dst
(
0
),
coeffs
(
0
),
op
(
EltwiseLayer
::
PROD
),
nstripes
(
0
),
activ
(
0
)
{}
...
...
@@ -126,7 +128,7 @@ public:
const
std
::
vector
<
float
>&
coeffs
,
EltwiseOp
op
,
const
ActivationLayer
*
activ
,
int
nstripes
)
{
CV_Assert
(
dst
.
dims
==
4
&&
dst
.
type
()
==
CV_32F
&&
dst
.
isContinuous
());
CV_Assert
(
1
<
dst
.
dims
&&
dst
.
dims
<=
4
,
dst
.
type
()
==
CV_32F
,
dst
.
isContinuous
());
CV_Assert
(
coeffs
.
empty
()
||
coeffs
.
size
()
==
(
size_t
)
nsrcs
);
for
(
int
i
=
0
;
i
>
nsrcs
;
i
++
)
...
...
@@ -142,6 +144,11 @@ public:
p
.
dst
=
&
dst
;
p
.
op
=
op
;
p
.
nstripes
=
nstripes
;
p
.
channels
=
(
dst
.
dims
==
4
?
dst
.
size
[
1
]
:
1
);
p
.
planeSize
=
(
dst
.
dims
>=
3
?
dst
.
size
[
dst
.
dims
-
1
]
*
dst
.
size
[
dst
.
dims
-
2
]
:
dst
.
size
[
dst
.
dims
-
1
]);
CV_Assert
(
dst
.
total
()
==
dst
.
size
[
0
]
*
p
.
channels
*
p
.
planeSize
);
bool
simpleCoeffs
=
true
;
if
(
op
==
EltwiseLayer
::
SUM
&&
!
coeffs
.
empty
()
)
{
...
...
@@ -162,13 +169,11 @@ public:
void
operator
()(
const
Range
&
r
)
const
{
size_t
planeSize
=
dst
->
size
[
2
]
*
dst
->
size
[
3
];
size_t
total
=
dst
->
size
[
0
]
*
planeSize
;
size_t
stripeSize
=
(
total
+
nstripes
-
1
)
/
nstripes
;
size_t
stripeStart
=
r
.
start
*
stripeSize
;
size_t
stripeEnd
=
std
::
min
(
r
.
end
*
stripeSize
,
total
);
int
c
,
j
,
k
,
n
=
nsrcs
;
int
channels
=
dst
->
size
[
1
];
const
float
*
coeffsptr
=
coeffs
&&
!
coeffs
->
empty
()
?
&
coeffs
->
at
(
0
)
:
0
;
float
*
dstptr0
=
dst
->
ptr
<
float
>
();
int
blockSize0
=
1
<<
12
,
blockSize
=
blockSize0
;
...
...
modules/dnn/src/layers/fully_connected_layer.cpp
浏览文件 @
ad8bbaf0
...
...
@@ -107,14 +107,18 @@ public:
std
::
vector
<
MatShape
>
&
outputs
,
std
::
vector
<
MatShape
>
&
)
const
{
CV_Assert
(
inputs
.
size
()
>
0
);
CV_Assert
(
inputs
.
size
()
==
1
);
CV_Assert
(
1
<=
blobs
.
size
()
&&
blobs
.
size
()
<=
2
);
CV_Assert
(
blobs
[
0
].
dims
==
2
);
int
cAxis
=
clamp
(
axis
,
inputs
[
0
]);
int
outerSize
=
total
(
inputs
[
0
],
0
,
cAxis
);
int
numOutput
=
blobs
[
0
].
size
[
0
];
outputs
.
resize
(
inputs
.
size
(),
shape
(
outerSize
,
numOutput
));
MatShape
outShape
(
cAxis
+
1
);
for
(
int
i
=
0
;
i
<
cAxis
;
++
i
)
outShape
[
i
]
=
inputs
[
0
][
i
];
outShape
.
back
()
=
numOutput
;
outputs
.
resize
(
inputs
.
size
(),
outShape
);
CV_Assert
(
!
bias
||
(
size_t
)
numOutput
==
blobs
[
1
].
total
());
return
false
;
...
...
@@ -278,8 +282,8 @@ public:
for
(
size_t
i
=
0
;
i
<
input
.
size
();
i
++
)
{
UMat
srcMat
,
dstMat
;
srcMat
=
input
[
i
]
->
getUMat
(
ACCESS_READ
);
dstMat
=
output
[
i
].
getUMat
(
ACCESS_WRITE
);
srcMat
=
input
[
i
]
->
reshape
(
1
,
outerSize
).
getUMat
(
ACCESS_READ
);
dstMat
=
output
[
i
].
reshape
(
1
,
outerSize
).
getUMat
(
ACCESS_WRITE
);
dstMat
.
setTo
(
0.0
f
);
if
(
!
innerProductOp
->
Forward
(
srcMat
,
umat_blobs
[
0
],
(
bias
)
?
umat_blobs
[
1
]
:
UMat
(),
dstMat
))
...
...
modules/dnn/test/test_layers.cpp
浏览文件 @
ad8bbaf0
...
...
@@ -274,6 +274,11 @@ OCL_TEST(Layer_Test_Concat, Accuracy)
testLayerUsingCaffeModels
(
"layer_concat"
,
DNN_TARGET_OPENCL
);
}
TEST
(
Layer_Test_Eltwise
,
Accuracy
)
{
testLayerUsingCaffeModels
(
"layer_eltwise"
);
}
//template<typename XMat>
//static void test_Layer_Concat()
//{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录