Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
73830eb2
X
X2Paddle
项目概览
PaddlePaddle
/
X2Paddle
大约 1 年 前同步成功
通知
328
Star
698
Fork
167
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
26
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
X2Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
26
Issue
26
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
73830eb2
编写于
6月 30, 2020
作者:
J
jiangjiajun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify code format
上级
0edcc783
变更
21
展开全部
显示空白变更内容
内联
并排
Showing
21 changed file
with
9494 addition
and
9323 deletion
+9494
-9323
tools/merge_params.py
tools/merge_params.py
+9
-7
x2paddle/core/fluid_code.py
x2paddle/core/fluid_code.py
+4
-4
x2paddle/core/op_mapper.py
x2paddle/core/op_mapper.py
+21
-22
x2paddle/decoder/caffe_decoder.py
x2paddle/decoder/caffe_decoder.py
+10
-10
x2paddle/decoder/caffe_pb2.py
x2paddle/decoder/caffe_pb2.py
+9043
-8751
x2paddle/decoder/onnx_decoder.py
x2paddle/decoder/onnx_decoder.py
+4
-6
x2paddle/decoder/tf_decoder.py
x2paddle/decoder/tf_decoder.py
+8
-8
x2paddle/op_mapper/caffe_custom_layer/convolutiondepthwise.py
...ddle/op_mapper/caffe_custom_layer/convolutiondepthwise.py
+18
-16
x2paddle/op_mapper/caffe_custom_layer/detectionoutput.py
x2paddle/op_mapper/caffe_custom_layer/detectionoutput.py
+7
-6
x2paddle/op_mapper/caffe_custom_layer/normalize.py
x2paddle/op_mapper/caffe_custom_layer/normalize.py
+7
-7
x2paddle/op_mapper/caffe_custom_layer/permute.py
x2paddle/op_mapper/caffe_custom_layer/permute.py
+5
-4
x2paddle/op_mapper/caffe_custom_layer/priorbox.py
x2paddle/op_mapper/caffe_custom_layer/priorbox.py
+18
-16
x2paddle/op_mapper/caffe_custom_layer/roipooling.py
x2paddle/op_mapper/caffe_custom_layer/roipooling.py
+11
-9
x2paddle/op_mapper/caffe_custom_layer/select.py
x2paddle/op_mapper/caffe_custom_layer/select.py
+11
-9
x2paddle/op_mapper/caffe_custom_layer/shufflechannel.py
x2paddle/op_mapper/caffe_custom_layer/shufflechannel.py
+5
-4
x2paddle/op_mapper/caffe_op_mapper.py
x2paddle/op_mapper/caffe_op_mapper.py
+145
-182
x2paddle/op_mapper/caffe_shape.py
x2paddle/op_mapper/caffe_shape.py
+4
-4
x2paddle/op_mapper/onnx_custom_layer/InstanceNormalization.py
...ddle/op_mapper/onnx_custom_layer/InstanceNormalization.py
+12
-14
x2paddle/op_mapper/tf_op_mapper.py
x2paddle/op_mapper/tf_op_mapper.py
+120
-216
x2paddle/optimizer/caffe_optimizer.py
x2paddle/optimizer/caffe_optimizer.py
+10
-8
x2paddle/optimizer/tf_optimizer.py
x2paddle/optimizer/tf_optimizer.py
+22
-20
未找到文件。
tools/merge_params.py
浏览文件 @
73830eb2
...
@@ -5,10 +5,12 @@ model_dir = sys.argv[1]
...
@@ -5,10 +5,12 @@ model_dir = sys.argv[1]
new_model_dir
=
sys
.
argv
[
2
]
new_model_dir
=
sys
.
argv
[
2
]
exe
=
fluid
.
Executor
(
fluid
.
CPUPlace
())
exe
=
fluid
.
Executor
(
fluid
.
CPUPlace
())
[
inference_program
,
feed_target_names
,
[
inference_program
,
feed_target_names
,
fetch_targets
]
=
fluid
.
io
.
load_inference_model
(
dirname
=
model_dir
,
executor
=
exe
)
fetch_targets
]
=
fluid
.
io
.
load_inference_model
(
dirname
=
model_dir
,
executor
=
exe
)
print
(
feed_target_names
)
print
(
feed_target_names
)
fluid
.
io
.
save_inference_model
(
dirname
=
new_model_dir
,
fluid
.
io
.
save_inference_model
(
dirname
=
new_model_dir
,
feeded_var_names
=
feed_target_names
,
feeded_var_names
=
feed_target_names
,
target_vars
=
fetch_targets
,
target_vars
=
fetch_targets
,
executor
=
exe
,
executor
=
exe
,
...
...
x2paddle/core/fluid_code.py
浏览文件 @
73830eb2
...
@@ -46,8 +46,8 @@ class Layer(object):
...
@@ -46,8 +46,8 @@ class Layer(object):
for
input
in
self
.
inputs
:
for
input
in
self
.
inputs
:
if
isinstance
(
input
,
GraphNode
):
if
isinstance
(
input
,
GraphNode
):
if
hasattr
(
input
,
"index"
):
if
hasattr
(
input
,
"index"
):
in_list
+=
(
input
.
layer_name
+
in_list
+=
(
input
.
layer_name
+
"[{}]"
.
format
(
"[{}]"
.
format
(
input
.
index
)
+
", "
)
input
.
index
)
+
", "
)
else
:
else
:
in_list
+=
(
input
.
layer_name
+
", "
)
in_list
+=
(
input
.
layer_name
+
", "
)
elif
isinstance
(
input
,
six
.
string_types
):
elif
isinstance
(
input
,
six
.
string_types
):
...
@@ -71,8 +71,8 @@ class Layer(object):
...
@@ -71,8 +71,8 @@ class Layer(object):
layer_code
=
layer_code
+
key
+
"={}, "
.
format
(
input
)
layer_code
=
layer_code
+
key
+
"={}, "
.
format
(
input
)
elif
isinstance
(
self
.
inputs
,
GraphNode
):
elif
isinstance
(
self
.
inputs
,
GraphNode
):
if
hasattr
(
self
.
inputs
,
"index"
):
if
hasattr
(
self
.
inputs
,
"index"
):
layer_code
+=
(
self
.
inputs
.
layer_name
+
layer_code
+=
(
"[{}]"
.
format
(
self
.
inputs
.
index
))
self
.
inputs
.
layer_name
+
"[{}]"
.
format
(
self
.
inputs
.
index
))
else
:
else
:
layer_code
+=
(
self
.
inputs
.
layer_name
)
layer_code
+=
(
self
.
inputs
.
layer_name
)
if
self
.
op
!=
"="
:
if
self
.
op
!=
"="
:
...
...
x2paddle/core/op_mapper.py
浏览文件 @
73830eb2
...
@@ -64,10 +64,8 @@ def run_net(param_dir="./"):
...
@@ -64,10 +64,8 @@ def run_net(param_dir="./"):
b
=
os
.
path
.
exists
(
os
.
path
.
join
(
param_dir
,
var
.
name
))
b
=
os
.
path
.
exists
(
os
.
path
.
join
(
param_dir
,
var
.
name
))
return
b
return
b
fluid
.
io
.
load_vars
(
exe
,
fluid
.
io
.
load_vars
(
param_dir
,
exe
,
param_dir
,
fluid
.
default_main_program
(),
predicate
=
if_exist
)
fluid
.
default_main_program
(),
predicate
=
if_exist
)
class
OpMapper
(
object
):
class
OpMapper
(
object
):
...
@@ -98,8 +96,8 @@ class OpMapper(object):
...
@@ -98,8 +96,8 @@ class OpMapper(object):
def
add_codes
(
self
,
codes
,
indent
=
0
):
def
add_codes
(
self
,
codes
,
indent
=
0
):
if
isinstance
(
codes
,
list
):
if
isinstance
(
codes
,
list
):
for
code
in
codes
:
for
code
in
codes
:
self
.
paddle_codes
+=
(
self
.
tab
*
indent
+
code
.
strip
(
'
\n
'
)
+
self
.
paddle_codes
+=
(
'
\n
'
)
self
.
tab
*
indent
+
code
.
strip
(
'
\n
'
)
+
'
\n
'
)
elif
isinstance
(
codes
,
str
):
elif
isinstance
(
codes
,
str
):
self
.
paddle_codes
+=
(
self
.
tab
*
indent
+
codes
.
strip
(
'
\n
'
)
+
'
\n
'
)
self
.
paddle_codes
+=
(
self
.
tab
*
indent
+
codes
.
strip
(
'
\n
'
)
+
'
\n
'
)
else
:
else
:
...
@@ -135,20 +133,21 @@ class OpMapper(object):
...
@@ -135,20 +133,21 @@ class OpMapper(object):
os
.
path
.
join
(
os
.
path
.
join
(
py_code_dir
,
var
.
name
)))
os
.
path
.
join
(
os
.
path
.
join
(
py_code_dir
,
var
.
name
)))
return
b
return
b
fluid
.
io
.
load_vars
(
exe
,
fluid
.
io
.
load_vars
(
exe
,
py_code_dir
,
py_code_dir
,
fluid
.
default_main_program
(),
fluid
.
default_main_program
(),
predicate
=
if_exist
)
predicate
=
if_exist
)
if
params_merge
:
if
params_merge
:
fluid
.
io
.
save_inference_model
(
dirname
=
os
.
path
.
join
(
fluid
.
io
.
save_inference_model
(
save_dir
,
"inference_model"
),
dirname
=
os
.
path
.
join
(
save_dir
,
"inference_model"
),
feeded_var_names
=
input_names
,
feeded_var_names
=
input_names
,
target_vars
=
outputs
,
target_vars
=
outputs
,
executor
=
exe
,
executor
=
exe
,
params_filename
=
"__params__"
)
params_filename
=
"__params__"
)
else
:
else
:
fluid
.
io
.
save_inference_model
(
dirname
=
os
.
path
.
join
(
fluid
.
io
.
save_inference_model
(
save_dir
,
"inference_model"
),
dirname
=
os
.
path
.
join
(
save_dir
,
"inference_model"
),
feeded_var_names
=
input_names
,
feeded_var_names
=
input_names
,
target_vars
=
outputs
,
target_vars
=
outputs
,
executor
=
exe
,
executor
=
exe
,
...
...
x2paddle/decoder/caffe_decoder.py
浏览文件 @
73830eb2
...
@@ -34,8 +34,8 @@ class CaffeResolver(object):
...
@@ -34,8 +34,8 @@ class CaffeResolver(object):
if
not
os
.
path
.
isfile
(
self
.
caffe_proto
):
if
not
os
.
path
.
isfile
(
self
.
caffe_proto
):
raise
Exception
(
raise
Exception
(
"The .py file compiled by caffe.proto is not exist."
)
"The .py file compiled by caffe.proto is not exist."
)
(
filepath
,
(
filepath
,
tempfilename
)
=
os
.
path
.
split
(
tempfilename
)
=
os
.
path
.
split
(
os
.
path
.
abspath
(
self
.
caffe_proto
))
os
.
path
.
abspath
(
self
.
caffe_proto
))
(
filename
,
extension
)
=
os
.
path
.
splitext
(
tempfilename
)
(
filename
,
extension
)
=
os
.
path
.
splitext
(
tempfilename
)
sys
.
path
.
append
(
filepath
)
sys
.
path
.
append
(
filepath
)
out
=
__import__
(
filename
)
out
=
__import__
(
filename
)
...
@@ -49,12 +49,12 @@ class CaffeResolver(object):
...
@@ -49,12 +49,12 @@ class CaffeResolver(object):
class
CaffeGraphNode
(
GraphNode
):
class
CaffeGraphNode
(
GraphNode
):
def
__init__
(
self
,
layer
,
type_str
,
layer_name
=
None
):
def
__init__
(
self
,
layer
,
type_str
,
layer_name
=
None
):
if
layer_name
is
None
:
if
layer_name
is
None
:
super
(
CaffeGraphNode
,
super
(
CaffeGraphNode
,
self
).
__init__
(
self
).
__init__
(
layer
,
layer
,
layer
.
name
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
))
layer
.
name
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
))
else
:
else
:
super
(
CaffeGraphNode
,
super
(
CaffeGraphNode
,
self
).
__init__
(
self
).
__init__
(
layer
,
layer
,
layer_name
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
))
layer_name
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
))
self
.
layer_type
=
type_str
self
.
layer_type
=
type_str
self
.
fluid_code
=
FluidCode
()
self
.
fluid_code
=
FluidCode
()
...
@@ -268,8 +268,8 @@ class CaffeDecoder(object):
...
@@ -268,8 +268,8 @@ class CaffeDecoder(object):
c_i
=
blob
.
channels
c_i
=
blob
.
channels
h
=
blob
.
height
h
=
blob
.
height
w
=
blob
.
width
w
=
blob
.
width
data
=
np
.
asarray
(
list
(
blob
.
data
),
data
=
np
.
asarray
(
dtype
=
np
.
float32
).
reshape
(
c_o
,
c_i
,
h
,
w
)
list
(
blob
.
data
),
dtype
=
np
.
float32
).
reshape
(
c_o
,
c_i
,
h
,
w
)
transformed
.
append
(
data
)
transformed
.
append
(
data
)
return
transformed
return
transformed
x2paddle/decoder/caffe_pb2.py
浏览文件 @
73830eb2
此差异已折叠。
点击以展开。
x2paddle/decoder/onnx_decoder.py
浏览文件 @
73830eb2
...
@@ -71,9 +71,8 @@ class ONNXGraphNode(GraphNode):
...
@@ -71,9 +71,8 @@ class ONNXGraphNode(GraphNode):
if
attr
.
type
==
onnx
.
AttributeProto
.
TENSOR
:
if
attr
.
type
==
onnx
.
AttributeProto
.
TENSOR
:
dtype
=
np
.
dtype
(
TENSOR_TYPE_TO_NP_TYPE
[
attr
.
t
.
data_type
])
dtype
=
np
.
dtype
(
TENSOR_TYPE_TO_NP_TYPE
[
attr
.
t
.
data_type
])
data
=
attr
.
t
.
raw_data
data
=
attr
.
t
.
raw_data
value
=
np
.
frombuffer
(
data
,
value
=
np
.
frombuffer
(
dtype
=
dtype
,
data
,
dtype
=
dtype
,
count
=
(
len
(
data
)
//
dtype
.
itemsize
))
count
=
(
len
(
data
)
//
dtype
.
itemsize
))
elif
attr
.
type
==
onnx
.
AttributeProto
.
STRING
:
elif
attr
.
type
==
onnx
.
AttributeProto
.
STRING
:
value
=
attr
.
s
value
=
attr
.
s
value
=
value
.
decode
()
if
isinstance
(
value
,
bytes
)
else
value
value
=
value
.
decode
()
if
isinstance
(
value
,
bytes
)
else
value
...
@@ -205,9 +204,8 @@ class ONNXGraph(Graph):
...
@@ -205,9 +204,8 @@ class ONNXGraph(Graph):
self
.
node_map
[
name
].
weight
=
weight
self
.
node_map
[
name
].
weight
=
weight
self
.
node_map
[
name
].
embeded_as
=
[]
self
.
node_map
[
name
].
embeded_as
=
[]
else
:
else
:
self
.
node_map
[
name
]
=
ONNXGraphDataNode
(
initializer
,
self
.
node_map
[
name
]
=
ONNXGraphDataNode
(
layer_name
=
name
,
initializer
,
layer_name
=
name
,
is_global_input
=
False
)
is_global_input
=
False
)
self
.
node_map
[
name
].
weight
=
weight
self
.
node_map
[
name
].
weight
=
weight
self
.
node_map
[
name
].
embeded_as
=
[]
self
.
node_map
[
name
].
embeded_as
=
[]
...
...
x2paddle/decoder/tf_decoder.py
浏览文件 @
73830eb2
...
@@ -120,13 +120,13 @@ class TFGraph(Graph):
...
@@ -120,13 +120,13 @@ class TFGraph(Graph):
def
build
(
self
):
def
build
(
self
):
for
layer
in
self
.
model
.
node
:
for
layer
in
self
.
model
.
node
:
self
.
node_map
[
layer
.
name
.
replace
(
'/'
,
'_'
).
replace
(
self
.
node_map
[
layer
.
name
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
)]
=
TFGraphNode
(
layer
,
data_format
=
self
.
tf_data_format
)
'-'
,
'_'
)]
=
TFGraphNode
(
layer
,
data_format
=
self
.
tf_data_format
)
for
layer_name
,
node
in
self
.
node_map
.
items
():
for
layer_name
,
node
in
self
.
node_map
.
items
():
for
in_node
in
node
.
layer
.
input
:
for
in_node
in
node
.
layer
.
input
:
in_node
=
in_node
.
replace
(
'/'
,
in_node
=
in_node
.
replace
(
'/'
,
'_'
).
replace
(
'-'
,
'_'
).
replace
(
'_'
).
replace
(
'-'
,
'^'
,
''
)
'_'
).
replace
(
'^'
,
''
)
if
in_node
not
in
self
.
node_map
:
if
in_node
not
in
self
.
node_map
:
if
in_node
.
strip
().
split
(
':'
)[
0
]
in
self
.
node_map
:
if
in_node
.
strip
().
split
(
':'
)[
0
]
in
self
.
node_map
:
self
.
connect
(
in_node
.
strip
().
split
(
':'
)[
0
],
layer_name
)
self
.
connect
(
in_node
.
strip
().
split
(
':'
)[
0
],
layer_name
)
...
@@ -390,10 +390,10 @@ class TFDecoder(object):
...
@@ -390,10 +390,10 @@ class TFDecoder(object):
shape
=
shape
,
shape
=
shape
,
name
=
"x2paddle_{}"
.
format
(
layer
.
name
))
name
=
"x2paddle_{}"
.
format
(
layer
.
name
))
except
:
except
:
x2paddle_input
=
tf
.
placeholder
(
dtype
=
dtype
,
x2paddle_input
=
tf
.
placeholder
(
dtype
=
dtype
,
shape
=
shape
,
shape
=
shape
,
name
=
"x2paddle_{}"
.
format
(
name
=
"x2paddle_{}"
.
format
(
layer
.
name
))
layer
.
name
))
input_map
[
"{}:0"
.
format
(
layer
.
name
)]
=
x2paddle_input
input_map
[
"{}:0"
.
format
(
layer
.
name
)]
=
x2paddle_input
if
shape
.
count
(
None
)
>
0
:
if
shape
.
count
(
None
)
>
0
:
...
...
x2paddle/op_mapper/caffe_custom_layer/convolutiondepthwise.py
浏览文件 @
73830eb2
...
@@ -120,9 +120,10 @@ def convolutiondepthwise_layer(inputs,
...
@@ -120,9 +120,10 @@ def convolutiondepthwise_layer(inputs,
dila_len
)
dila_len
)
c_in
=
input_shape
[
0
][
1
]
c_in
=
input_shape
[
0
][
1
]
c_out
=
num_output
if
num_output
is
not
None
else
input_shape
[
0
][
1
]
c_out
=
num_output
if
num_output
is
not
None
else
input_shape
[
0
][
1
]
group
=
int
(
c_in
/
(
c_in
/
c_out
))
if
c_in
>
c_out
else
int
(
c_in
/
group
=
int
(
c_in
/
(
c_in
/
c_out
))
if
c_in
>
c_out
else
int
(
(
c_out
/
c_in
))
c_in
/
(
c_out
/
c_in
))
out
=
fluid
.
layers
.
conv2d
(
input
,
out
=
fluid
.
layers
.
conv2d
(
input
,
dilation
=
[
dila_h
,
dila_w
],
dilation
=
[
dila_h
,
dila_w
],
filter_size
=
[
k_h
,
k_w
],
filter_size
=
[
k_h
,
k_w
],
stride
=
[
s_h
,
s_w
],
stride
=
[
s_h
,
s_w
],
...
@@ -142,7 +143,8 @@ def convolutiondepthwise_weights(name, data=None):
...
@@ -142,7 +143,8 @@ def convolutiondepthwise_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'ConvolutionDepthwise'
,
register
(
kind
=
'ConvolutionDepthwise'
,
shape
=
convolutiondepthwise_shape
,
shape
=
convolutiondepthwise_shape
,
layer
=
convolutiondepthwise_layer
,
layer
=
convolutiondepthwise_layer
,
weights
=
convolutiondepthwise_weights
)
weights
=
convolutiondepthwise_weights
)
x2paddle/op_mapper/caffe_custom_layer/detectionoutput.py
浏览文件 @
73830eb2
...
@@ -37,8 +37,8 @@ def detectionoutput_layer(inputs,
...
@@ -37,8 +37,8 @@ def detectionoutput_layer(inputs,
pbv
=
fluid
.
layers
.
reshape
(
x
=
pbv
,
shape
=
[
-
1
,
4
])
pbv
=
fluid
.
layers
.
reshape
(
x
=
pbv
,
shape
=
[
-
1
,
4
])
mbox_loc
=
inputs
[
0
]
mbox_loc
=
inputs
[
0
]
mbox_loc
=
fluid
.
layers
.
reshape
(
x
=
mbox_loc
,
shape
=
[
-
1
,
pb
.
shape
[
0
],
4
])
mbox_loc
=
fluid
.
layers
.
reshape
(
x
=
mbox_loc
,
shape
=
[
-
1
,
pb
.
shape
[
0
],
4
])
mbox_conf_flatten
=
fluid
.
layers
.
reshape
(
x
=
mbox_conf_flatten
,
mbox_conf_flatten
=
fluid
.
layers
.
reshape
(
shape
=
[
0
,
pb
.
shape
[
0
],
-
1
])
x
=
mbox_conf_flatten
,
shape
=
[
0
,
pb
.
shape
[
0
],
-
1
])
default
=
{
"nms_threshold"
:
0.3
,
"top_k"
:
10
,
"eta"
:
1.0
}
default
=
{
"nms_threshold"
:
0.3
,
"top_k"
:
10
,
"eta"
:
1.0
}
fields
=
[
'eta'
,
'top_k'
,
'nms_threshold'
]
fields
=
[
'eta'
,
'top_k'
,
'nms_threshold'
]
...
@@ -64,7 +64,8 @@ def detectionoutput_weights(name, data=None):
...
@@ -64,7 +64,8 @@ def detectionoutput_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'DetectionOutput'
,
register
(
kind
=
'DetectionOutput'
,
shape
=
detectionoutput_shape
,
shape
=
detectionoutput_shape
,
layer
=
detectionoutput_layer
,
layer
=
detectionoutput_layer
,
weights
=
detectionoutput_weights
)
weights
=
detectionoutput_weights
)
x2paddle/op_mapper/caffe_custom_layer/normalize.py
浏览文件 @
73830eb2
...
@@ -20,9 +20,8 @@ def normalize_layer(inputs,
...
@@ -20,9 +20,8 @@ def normalize_layer(inputs,
attr
=
name
+
'_scale'
)
attr
=
name
+
'_scale'
)
scale_param
=
fluid
.
layers
.
reshape
(
x
=
scale_param
,
\
scale_param
=
fluid
.
layers
.
reshape
(
x
=
scale_param
,
\
shape
=
[
1
]
if
channel_shared
else
[
input_shape
[
0
][
1
]])
shape
=
[
1
]
if
channel_shared
else
[
input_shape
[
0
][
1
]])
out
=
fluid
.
layers
.
elementwise_mul
(
x
=
l2_norm
,
out
=
fluid
.
layers
.
elementwise_mul
(
y
=
scale_param
,
x
=
l2_norm
,
y
=
scale_param
,
axis
=-
1
if
channel_shared
else
1
)
axis
=-
1
if
channel_shared
else
1
)
return
out
return
out
...
@@ -31,7 +30,8 @@ def normalize_weights(name, data=None):
...
@@ -31,7 +30,8 @@ def normalize_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'Normalize'
,
register
(
kind
=
'Normalize'
,
shape
=
normalize_shape
,
shape
=
normalize_shape
,
layer
=
normalize_layer
,
layer
=
normalize_layer
,
weights
=
normalize_weights
)
weights
=
normalize_weights
)
x2paddle/op_mapper/caffe_custom_layer/permute.py
浏览文件 @
73830eb2
...
@@ -23,7 +23,8 @@ def permute_weights(name, data=None):
...
@@ -23,7 +23,8 @@ def permute_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'Permute'
,
register
(
kind
=
'Permute'
,
shape
=
permute_shape
,
shape
=
permute_shape
,
layer
=
permute_layer
,
layer
=
permute_layer
,
weights
=
permute_weights
)
weights
=
permute_weights
)
x2paddle/op_mapper/caffe_custom_layer/priorbox.py
浏览文件 @
73830eb2
...
@@ -30,7 +30,8 @@ def priorbox_layer(inputs,
...
@@ -30,7 +30,8 @@ def priorbox_layer(inputs,
steps
=
tuple
(
step
)
if
type
(
step
)
is
list
or
type
(
step
)
is
tuple
else
(
step
,
steps
=
tuple
(
step
)
if
type
(
step
)
is
list
or
type
(
step
)
is
tuple
else
(
step
,
step
)
step
)
box
,
variance_
=
fluid
.
layers
.
prior_box
(
input
,
box
,
variance_
=
fluid
.
layers
.
prior_box
(
input
,
image
,
image
,
min_sizes
=
min_size
,
min_sizes
=
min_size
,
max_sizes
=
max_size
,
max_sizes
=
max_size
,
...
@@ -53,7 +54,8 @@ def priorbox_weights(name, data=None):
...
@@ -53,7 +54,8 @@ def priorbox_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'PriorBox'
,
register
(
kind
=
'PriorBox'
,
shape
=
priorbox_shape
,
shape
=
priorbox_shape
,
layer
=
priorbox_layer
,
layer
=
priorbox_layer
,
weights
=
priorbox_weights
)
weights
=
priorbox_weights
)
x2paddle/op_mapper/caffe_custom_layer/roipooling.py
浏览文件 @
73830eb2
...
@@ -21,7 +21,8 @@ def roipooling_layer(inputs,
...
@@ -21,7 +21,8 @@ def roipooling_layer(inputs,
input
=
inputs
[
0
]
input
=
inputs
[
0
]
roi
=
inputs
[
1
]
roi
=
inputs
[
1
]
roi
=
fluid
.
layers
.
slice
(
roi
,
axes
=
[
1
],
starts
=
[
1
],
ends
=
[
5
])
roi
=
fluid
.
layers
.
slice
(
roi
,
axes
=
[
1
],
starts
=
[
1
],
ends
=
[
5
])
out
=
fluid
.
layers
.
roi_pool
(
input
,
out
=
fluid
.
layers
.
roi_pool
(
input
,
roi
,
roi
,
pooled_height
=
pooled_h
,
pooled_height
=
pooled_h
,
pooled_width
=
pooled_w
,
pooled_width
=
pooled_w
,
...
@@ -34,7 +35,8 @@ def roipooling_weights(name, data=None):
...
@@ -34,7 +35,8 @@ def roipooling_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'ROIPooling'
,
register
(
kind
=
'ROIPooling'
,
shape
=
roipooling_shape
,
shape
=
roipooling_shape
,
layer
=
roipooling_layer
,
layer
=
roipooling_layer
,
weights
=
roipooling_weights
)
weights
=
roipooling_weights
)
x2paddle/op_mapper/caffe_custom_layer/select.py
浏览文件 @
73830eb2
...
@@ -30,7 +30,8 @@ def select_layer(inputs,
...
@@ -30,7 +30,8 @@ def select_layer(inputs,
out
=
[]
out
=
[]
for
i
in
range
(
len
(
slice_point
)):
for
i
in
range
(
len
(
slice_point
)):
out
.
append
(
out
.
append
(
fluid
.
layers
.
slice
(
input
,
fluid
.
layers
.
slice
(
input
,
axes
=
[
axis
],
axes
=
[
axis
],
starts
=
[
slice_point
[
i
]],
starts
=
[
slice_point
[
i
]],
ends
=
[
slice_point
[
i
+
1
]],
ends
=
[
slice_point
[
i
+
1
]],
...
@@ -45,7 +46,8 @@ def select_weights(name, data=None):
...
@@ -45,7 +46,8 @@ def select_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'Select'
,
register
(
kind
=
'Select'
,
shape
=
select_shape
,
shape
=
select_shape
,
layer
=
select_layer
,
layer
=
select_layer
,
weights
=
select_weights
)
weights
=
select_weights
)
x2paddle/op_mapper/caffe_custom_layer/shufflechannel.py
浏览文件 @
73830eb2
...
@@ -17,7 +17,8 @@ def shufflechannel_weights(name, data=None):
...
@@ -17,7 +17,8 @@ def shufflechannel_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'ShuffleChannel'
,
register
(
kind
=
'ShuffleChannel'
,
shape
=
shufflechannel_shape
,
shape
=
shufflechannel_shape
,
layer
=
shufflechannel_layer
,
layer
=
shufflechannel_layer
,
weights
=
shufflechannel_weights
)
weights
=
shufflechannel_weights
)
x2paddle/op_mapper/caffe_op_mapper.py
浏览文件 @
73830eb2
此差异已折叠。
点击以展开。
x2paddle/op_mapper/caffe_shape.py
浏览文件 @
73830eb2
...
@@ -67,10 +67,10 @@ def get_strided_kernel_output_shape(params, input_shape, round_func):
...
@@ -67,10 +67,10 @@ def get_strided_kernel_output_shape(params, input_shape, round_func):
i_w
=
input_shape
[
3
]
i_w
=
input_shape
[
3
]
dila_h
,
dila_w
,
pad_h
,
pad_w
,
kernel_h
,
kernel_w
,
stride_h
,
stride_w
=
get_kernel_parameters
(
dila_h
,
dila_w
,
pad_h
,
pad_w
,
kernel_h
,
kernel_w
,
stride_h
,
stride_w
=
get_kernel_parameters
(
params
)
params
)
o_h
=
(
i_h
+
2
*
pad_h
-
(
dila_h
*
o_h
=
(
i_h
+
2
*
pad_h
-
(
kernel_h
-
1
)
+
1
))
/
float
(
stride_h
)
+
1
(
dila_h
*
(
kernel_h
-
1
)
+
1
))
/
float
(
stride_h
)
+
1
o_w
=
(
i_w
+
2
*
pad_w
-
(
dila_w
*
o_w
=
(
i_w
+
2
*
pad_w
-
(
kernel_w
-
1
)
+
1
))
/
float
(
stride_w
)
+
1
(
dila_w
*
(
kernel_w
-
1
)
+
1
))
/
float
(
stride_w
)
+
1
o_h
=
int
(
round_func
(
o_h
))
o_h
=
int
(
round_func
(
o_h
))
o_w
=
int
(
round_func
(
o_w
))
o_w
=
int
(
round_func
(
o_w
))
has_c_o
=
hasattr
(
params
,
'num_output'
)
has_c_o
=
hasattr
(
params
,
'num_output'
)
...
...
x2paddle/op_mapper/onnx_custom_layer/InstanceNormalization.py
浏览文件 @
73830eb2
...
@@ -24,21 +24,18 @@ def InstanceNormalization_layer(inputs, name=None):
...
@@ -24,21 +24,18 @@ def InstanceNormalization_layer(inputs, name=None):
epsilon
=
1e-5
epsilon
=
1e-5
input_
=
inputs
[
0
]
input_
=
inputs
[
0
]
mean
=
fluid
.
layers
.
reduce_mean
(
input_
,
dim
=
[
2
,
3
],
keep_dim
=
True
)
mean
=
fluid
.
layers
.
reduce_mean
(
input_
,
dim
=
[
2
,
3
],
keep_dim
=
True
)
var
=
fluid
.
layers
.
reduce_mean
(
fluid
.
layers
.
square
(
input_
-
mean
),
var
=
fluid
.
layers
.
reduce_mean
(
dim
=
[
2
,
3
],
fluid
.
layers
.
square
(
input_
-
mean
),
dim
=
[
2
,
3
],
keep_dim
=
True
)
keep_dim
=
True
)
if
name
is
not
None
:
if
name
is
not
None
:
scale_name
=
name
+
"_scale"
scale_name
=
name
+
"_scale"
offset_name
=
name
+
"_offset"
offset_name
=
name
+
"_offset"
scale_param
=
inputs
[
1
]
scale_param
=
inputs
[
1
]
offset_param
=
inputs
[
2
]
offset_param
=
inputs
[
2
]
scale
=
fluid
.
layers
.
create_parameter
(
name
=
scale_param
.
name
,
scale
=
fluid
.
layers
.
create_parameter
(
shape
=
input_
.
shape
[
1
:
2
],
name
=
scale_param
.
name
,
shape
=
input_
.
shape
[
1
:
2
],
dtype
=
"float32"
)
dtype
=
"float32"
)
offset
=
fluid
.
layers
.
create_parameter
(
offset
=
fluid
.
layers
.
create_parameter
(
name
=
offset_param
.
name
,
name
=
offset_param
.
name
,
shape
=
input_
.
shape
[
1
:
2
],
dtype
=
"float32"
)
shape
=
input_
.
shape
[
1
:
2
],
dtype
=
"float32"
)
tmp
=
fluid
.
layers
.
elementwise_mul
(
x
=
(
input_
-
mean
),
y
=
scale
,
axis
=
1
)
tmp
=
fluid
.
layers
.
elementwise_mul
(
x
=
(
input_
-
mean
),
y
=
scale
,
axis
=
1
)
tmp
=
tmp
/
fluid
.
layers
.
sqrt
(
var
+
epsilon
)
tmp
=
tmp
/
fluid
.
layers
.
sqrt
(
var
+
epsilon
)
...
@@ -51,7 +48,8 @@ def InstanceNormalization_weights(name, data=None):
...
@@ -51,7 +48,8 @@ def InstanceNormalization_weights(name, data=None):
return
weights_name
return
weights_name
register
(
kind
=
'InstanceNormalization'
,
register
(
kind
=
'InstanceNormalization'
,
shape
=
InstanceNormalization_shape
,
shape
=
InstanceNormalization_shape
,
layer
=
InstanceNormalization_layer
,
layer
=
InstanceNormalization_layer
,
child_func
=
None
,
child_func
=
None
,
...
...
x2paddle/op_mapper/tf_op_mapper.py
浏览文件 @
73830eb2
此差异已折叠。
点击以展开。
x2paddle/optimizer/caffe_optimizer.py
浏览文件 @
73830eb2
...
@@ -41,7 +41,8 @@ class CaffeOptimizer(object):
...
@@ -41,7 +41,8 @@ class CaffeOptimizer(object):
if
is_delete_node
:
if
is_delete_node
:
parent_node
.
fluid_code
.
clear
()
parent_node
.
fluid_code
.
clear
()
node
.
fluid_code
.
clear
()
node
.
fluid_code
.
clear
()
node
.
fluid_code
.
add_layer
(
"batch_norm"
,
node
.
fluid_code
.
add_layer
(
"batch_norm"
,
inputs
=
input
,
inputs
=
input
,
output
=
node
,
output
=
node
,
param_attr
=
parent_param_attr
)
param_attr
=
parent_param_attr
)
...
@@ -62,7 +63,8 @@ class CaffeOptimizer(object):
...
@@ -62,7 +63,8 @@ class CaffeOptimizer(object):
if
is_delete_node
:
if
is_delete_node
:
parent_node
.
fluid_code
.
clear
()
parent_node
.
fluid_code
.
clear
()
node
.
fluid_code
.
clear
()
node
.
fluid_code
.
clear
()
node
.
fluid_code
.
add_layer
(
op
,
node
.
fluid_code
.
add_layer
(
op
,
inputs
=
input
,
inputs
=
input
,
output
=
node
,
output
=
node
,
param_attr
=
parent_param_attr
)
param_attr
=
parent_param_attr
)
x2paddle/optimizer/tf_optimizer.py
浏览文件 @
73830eb2
...
@@ -554,7 +554,8 @@ class TFOptimizer(object):
...
@@ -554,7 +554,8 @@ class TFOptimizer(object):
node
.
fluid_code
.
layers
[
0
].
param_attr
[
"shape"
]
=
shape
node
.
fluid_code
.
layers
[
0
].
param_attr
[
"shape"
]
=
shape
node
.
fluid_code
.
layers
[
0
].
output
=
"nhwc_"
+
name
node
.
fluid_code
.
layers
[
0
].
output
=
"nhwc_"
+
name
attr
=
{
"perm"
:
[
0
,
2
,
3
,
1
]}
attr
=
{
"perm"
:
[
0
,
2
,
3
,
1
]}
node
.
fluid_code
.
add_layer
(
"transpose"
,
node
.
fluid_code
.
add_layer
(
"transpose"
,
inputs
=
"nhwc_"
+
name
,
inputs
=
"nhwc_"
+
name
,
output
=
node
,
output
=
node
,
param_attr
=
attr
)
param_attr
=
attr
)
...
@@ -972,10 +973,8 @@ class TFOptimizer(object):
...
@@ -972,10 +973,8 @@ class TFOptimizer(object):
"bias_after_scale"
:
True
,
"bias_after_scale"
:
True
,
"act"
:
act
"act"
:
act
}
}
node
.
fluid_code
.
add_layer
(
"scale"
,
node
.
fluid_code
.
add_layer
(
inputs
=
in_node
,
"scale"
,
inputs
=
in_node
,
output
=
node
,
param_attr
=
attr
)
output
=
node
,
param_attr
=
attr
)
del
self
.
graph
.
node_map
[
in_nodes0
[
0
].
layer_name
]
del
self
.
graph
.
node_map
[
in_nodes0
[
0
].
layer_name
]
del
self
.
graph
.
node_map
[
in_nodes0
[
1
].
layer_name
]
del
self
.
graph
.
node_map
[
in_nodes0
[
1
].
layer_name
]
...
@@ -1055,7 +1054,8 @@ class TFOptimizer(object):
...
@@ -1055,7 +1054,8 @@ class TFOptimizer(object):
"shape"
:
[
channel
],
"shape"
:
[
channel
],
"name"
:
string
(
node
.
layer_name
+
"_scale"
)
"name"
:
string
(
node
.
layer_name
+
"_scale"
)
}
}
node
.
fluid_code
.
add_layer
(
"create_parameter"
,
node
.
fluid_code
.
add_layer
(
"create_parameter"
,
inputs
=
None
,
inputs
=
None
,
output
=
node
.
layer_name
+
"_scale"
,
output
=
node
.
layer_name
+
"_scale"
,
param_attr
=
attr
)
param_attr
=
attr
)
...
@@ -1064,7 +1064,8 @@ class TFOptimizer(object):
...
@@ -1064,7 +1064,8 @@ class TFOptimizer(object):
"shape"
:
[
channel
],
"shape"
:
[
channel
],
"name"
:
string
(
node
.
layer_name
+
"_bias"
)
"name"
:
string
(
node
.
layer_name
+
"_bias"
)
}
}
node
.
fluid_code
.
add_layer
(
"create_parameter"
,
node
.
fluid_code
.
add_layer
(
"create_parameter"
,
inputs
=
None
,
inputs
=
None
,
output
=
node
.
layer_name
+
"_bias"
,
output
=
node
.
layer_name
+
"_bias"
,
param_attr
=
attr
)
param_attr
=
attr
)
...
@@ -1074,7 +1075,8 @@ class TFOptimizer(object):
...
@@ -1074,7 +1075,8 @@ class TFOptimizer(object):
"bias"
:
node
.
layer_name
+
"_bias"
"bias"
:
node
.
layer_name
+
"_bias"
}
}
attr
=
{
"act"
:
act
}
attr
=
{
"act"
:
act
}
node
.
fluid_code
.
add_layer
(
"affine_channel"
,
node
.
fluid_code
.
add_layer
(
"affine_channel"
,
inputs
=
inputs
,
inputs
=
inputs
,
output
=
node
,
output
=
node
,
param_attr
=
attr
)
param_attr
=
attr
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录