Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
872d81fa
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看板
提交
872d81fa
编写于
8月 29, 2020
作者:
S
SunAhong1993
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs
上级
841bfa0b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
64 addition
and
1 deletion
+64
-1
README.md
README.md
+7
-1
pytorch_to_script.md
pytorch_to_script.md
+57
-0
未找到文件。
README.md
浏览文件 @
872d81fa
...
...
@@ -44,6 +44,11 @@ x2paddle --framework=caffe --prototxt=deploy.prototxt --weight=deploy.caffemodel
```
x2paddle --framework=onnx --model=onnx_model.onnx --save_dir=pd_model
```
### PyTorch
```
x2paddle --framework=pytorch --model=resnet50.pt --save_dir=pd_model
```
### Paddle2ONNX
```
# 注意:paddle_infer_model_dir下需包含__model__和__params__两个文件
...
...
@@ -56,7 +61,7 @@ x2paddle --framework=paddle2onnx --model=paddle_infer_model_dir --save_dir=onnx_
|--prototxt | 当framework为caffe时,该参数指定caffe模型的proto文件路径 |
|--weight | 当framework为caffe时,该参数指定caffe模型的参数文件路径 |
|--save_dir | 指定转换后的模型保存目录路径 |
|--model | 当framework为tensorflow/onnx
时,该参数指定tensorflow的pb模型文件或onnx模型路径
|
|--model | 当framework为tensorflow/onnx
/pytorch时,该参数指定tensorflow的pb模型文件或onnx模型路径或者pytorch的script模型
|
|--caffe_proto |
**[可选]**
由caffe.proto编译成caffe_pb2.py文件的存放路径,当存在自定义Layer时使用,默认为None |
|--without_data_format_optimization |
**[可选]**
For TensorFlow, 当指定该参数时,关闭NHWC->NCHW的优化,见
[
文档Q2
](
FAQ.md
)
|
|--define_input_shape |
**[可选]**
For TensorFlow, 当指定该参数时,强制用户输入每个Placeholder的shape,见
[
文档Q2
](
FAQ.md
)
|
...
...
@@ -81,6 +86,7 @@ X2Paddle提供了工具解决如下问题,详见[tools/README.md](tools/README
3.
[
X2Paddle测试模型库
](
x2paddle_model_zoo.md
)
4.
[
PyTorch模型导出为ONNX模型
](
pytorch_to_onnx.md
)
5.
[
X2Paddle内置的Caffe自定义层
](
caffe_custom_layer.md
)
6.
[
PyTorch模型导出为ScriptModule模型
](
pytorch_to_script.md
)
## 更新历史
2019.
08.05
...
...
pytorch_to_script.md
0 → 100644
浏览文件 @
872d81fa
## PyTorch模型导出为ONNX模型
目前pytorch2paddle主要支持pytorch ScriptModule。 用户可通过如下示例代码,将torchvison或者自己开发写的模型转换成ScriptModule model:
```
#
coding
:
utf
-
8
import
torch
import
torch
.
nn
as
nn
from
torchvision
.
models
.
utils
import
load_state_dict_from_url
#
定义模型
class
AlexNet
(
nn
.
Module
):
def
__init__
(
self
,
num_classes
=
1000
):
super
(
AlexNet
,
self
).
__init__
()
self
.
features
=
nn
.
Sequential
(
nn
.
Conv2d
(
3
,
64
,
kernel_size
=
11
,
stride
=
4
,
padding
=
2
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
MaxPool2d
(
kernel_size
=
3
,
stride
=
2
),
nn
.
Conv2d
(
64
,
192
,
kernel_size
=
5
,
padding
=
2
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
MaxPool2d
(
kernel_size
=
3
,
stride
=
2
),
nn
.
Conv2d
(
192
,
384
,
kernel_size
=
3
,
padding
=
1
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
Conv2d
(
384
,
256
,
kernel_size
=
3
,
padding
=
1
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
Conv2d
(
256
,
256
,
kernel_size
=
3
,
padding
=
1
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
MaxPool2d
(
kernel_size
=
3
,
stride
=
2
),
)
self
.
avgpool
=
nn
.
AdaptiveAvgPool2d
((
6
,
6
))
self
.
classifier
=
nn
.
Sequential
(
nn
.
Dropout
(
0.0
),
nn
.
Linear
(
256
*
6
*
6
,
4096
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
Dropout
(
0.0
),
nn
.
Linear
(
4096
,
4096
),
nn
.
ReLU
(
inplace
=
True
),
nn
.
Linear
(
4096
,
num_classes
),
)
def
forward
(
self
,
x
):
x
=
self
.
features
(
x
)
for
i
in
range
(
1
):
x
=
self
.
avgpool
(
x
)
x
=
torch
.
flatten
(
x
,
1
)
x
=
self
.
classifier
(
x
)
return
x
#
初始化模型
model
=
AlexNet
()
#
加载参数
state_dict
=
load_state_dict_from_url
(
'https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth'
,
progress
=
True
)
model
.
load_state_dict
(
state_dict
)
#
设置模式
model
.
eval
()
#
生成
ScriptModule
并保存
script
=
torch
.
jit
.
script
(
model
)
torch
.
jit
.
save
(
script
,
"alexnet.pt"
)
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录