Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
98a6cacb
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看板
未验证
提交
98a6cacb
编写于
8月 08, 2019
作者:
J
Jason
提交者:
GitHub
8月 08, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #84 from Channingss/develop
modify readme.md
上级
590cc880
ae31abd2
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
29 addition
and
8 deletion
+29
-8
README.md
README.md
+4
-3
x2paddle/op_mapper/onnx_directly_map.py
x2paddle/op_mapper/onnx_directly_map.py
+16
-0
x2paddle/op_mapper/onnx_op_mapper.py
x2paddle/op_mapper/onnx_op_mapper.py
+3
-3
x2paddle_model_zoo.md
x2paddle_model_zoo.md
+6
-2
未找到文件。
README.md
浏览文件 @
98a6cacb
...
@@ -12,7 +12,7 @@ paddlepaddle >= 1.5.0
...
@@ -12,7 +12,7 @@ paddlepaddle >= 1.5.0
**以下依赖只需对应安装自己需要的即可**
**以下依赖只需对应安装自己需要的即可**
转换tensorflow模型 : tensorflow == 1.14.0
转换tensorflow模型 : tensorflow == 1.14.0
转换caffe模型 : caffe == 1.0.0
转换caffe模型 : caffe == 1.0.0
转换onnx模型 : onnx == 1.5.0 pytorch == 1.1.0
## 安装
## 安装
```
```
pip install x2paddle
pip install x2paddle
...
@@ -32,8 +32,9 @@ x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
...
@@ -32,8 +32,9 @@ x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
x2paddle --framework=caffe --prototxt=deploy.proto --weight=deploy.caffemodel --save_dir=pd_model
x2paddle --framework=caffe --prototxt=deploy.proto --weight=deploy.caffemodel --save_dir=pd_model
```
```
### ONNX
### ONNX
即将release,目前仍可使用
[
onnx2fluid
](
https://github.com/PaddlePaddle/X2Paddle/tree/release-0.3/onnx2fluid
)
```
x2paddle --framework=onnx --model=onnx_model.onnx --save_dir=pd_model
```
### 参数选项
### 参数选项
| 参数 | |
| 参数 | |
|----------|--------------|
|----------|--------------|
...
...
x2paddle/op_mapper/onnx_directly_map.py
浏览文件 @
98a6cacb
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
# limitations under the License.
# limitations under the License.
from
collections
import
OrderedDict
as
_dict
from
collections
import
OrderedDict
as
_dict
import
numpy
as
_np
default_op_mapping_field_values
=
_dict
()
default_op_mapping_field_values
=
_dict
()
default_op_mapping_field_values
[
'FLUID_OP'
]
=
''
default_op_mapping_field_values
[
'FLUID_OP'
]
=
''
...
@@ -30,6 +31,21 @@ default_op_mapping = {
...
@@ -30,6 +31,21 @@ default_op_mapping = {
'Mul'
:
[
'elementwise_mul'
,
[
'X'
,
'Y'
],
[
'Out'
],
'Mul'
:
[
'elementwise_mul'
,
[
'X'
,
'Y'
],
[
'Out'
],
dict
(),
dict
(),
dict
(
axis
=-
1
)],
dict
(
axis
=-
1
)],
'Clip'
:
[
'clip'
,
[
'X'
],
[
'Out'
],
dict
(),
dict
(
min
=
(
_np
.
asarray
([
255
,
255
,
127
,
255
],
dtype
=
_np
.
uint8
).
view
(
_np
.
float32
)),
max
=
(
_np
.
asarray
([
255
,
255
,
127
,
127
],
dtype
=
_np
.
uint8
).
view
(
_np
.
float32
)),
)
],
'ReduceMean'
:
[
'reduce_mean'
,
[
'X'
],
[
'Out'
],
dict
(
axes
=
'dim'
,
keepdims
=
'keep_dim'
),
dict
(
keep_dim
=
1
)
]
}
}
default_ioa_constraint
=
{
default_ioa_constraint
=
{
...
...
x2paddle/op_mapper/onnx_op_mapper.py
浏览文件 @
98a6cacb
...
@@ -62,7 +62,7 @@ class ONNXOpMapper(OpMapper):
...
@@ -62,7 +62,7 @@ class ONNXOpMapper(OpMapper):
func
=
getattr
(
self
,
op
)
func
=
getattr
(
self
,
op
)
func
(
node
)
func
(
node
)
elif
op
in
default_op_mapping
:
elif
op
in
default_op_mapping
:
self
.
_default
(
node
)
self
.
directly_map
(
node
)
def
op_checker
(
self
):
def
op_checker
(
self
):
unsupported_ops
=
set
()
unsupported_ops
=
set
()
...
@@ -80,7 +80,7 @@ class ONNXOpMapper(OpMapper):
...
@@ -80,7 +80,7 @@ class ONNXOpMapper(OpMapper):
print
(
op
)
print
(
op
)
return
False
return
False
def
_default
(
self
,
node
,
*
args
,
name
=
''
,
**
kwargs
):
def
directly_map
(
self
,
node
,
*
args
,
name
=
''
,
**
kwargs
):
inputs
=
node
.
layer
.
input
inputs
=
node
.
layer
.
input
outputs
=
node
.
layer
.
output
outputs
=
node
.
layer
.
output
op_type
=
node
.
layer_type
op_type
=
node
.
layer_type
...
@@ -544,7 +544,7 @@ class ONNXOpMapper(OpMapper):
...
@@ -544,7 +544,7 @@ class ONNXOpMapper(OpMapper):
"momentum"
:
momentum
,
"momentum"
:
momentum
,
"epsilon"
:
epsilon
,
"epsilon"
:
epsilon
,
"data_layout"
:
string
(
'NCHW'
),
"data_layout"
:
string
(
'NCHW'
),
"is_test"
:
'True'
,
"is_test"
:
True
,
"param_attr"
:
string
(
val_scale
.
layer_name
),
"param_attr"
:
string
(
val_scale
.
layer_name
),
"bias_attr"
:
string
(
val_b
.
layer_name
),
"bias_attr"
:
string
(
val_b
.
layer_name
),
"moving_mean_name"
:
string
(
val_mean
.
layer_name
),
"moving_mean_name"
:
string
(
val_mean
.
layer_name
),
...
...
x2paddle_model_zoo.md
浏览文件 @
98a6cacb
...
@@ -47,8 +47,12 @@
...
@@ -47,8 +47,12 @@
```
```
import torch
import torch
import torchvision
import torchvision
dummy_input = torch.randn(1, 3, 224, 224) #根据不同模型调整shape
#根据不同模型调整输入的shape
dummy_input = torch.randn(1, 3, 224, 224)
resnet18 = torchvision.models.resnet18(pretrained=True)
resnet18 = torchvision.models.resnet18(pretrained=True)
torch.onnx.export(resnet18, dummy_input, "resnet18.onnx",verbose=True)#"resnet18.onnx"为onnx model的存储路径
#"resnet18.onnx"为onnx model的存储路径
torch.onnx.export(resnet18, dummy_input, "resnet18.onnx",verbose=True)
```
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录