将python-project从speed1.x升级到speed2.0
paddle1to2的Python项目详细描述
将python模型从padle-1.x升级到speed-2。在
注意
paddle1to2
的目的是将python文件从padle-1.x逐个转换为slate-2,它不处理间接导入。e、 g
# filename "a.py"importpaddle.fluidasfluidpass# filename "b.py"fromaimport*classMyLayer(fluid.layers.Layer):pass
“b.py”中的fluid.layers.Layer
不会被转换。
,所以在运行paddle1to2
之前,必须确保您已经为每个python文件直接导入所有使用过的slate模块、类、对象。
安装
padle1to2支持Linux、Mac OS、Windows(建议使用Git Bash)、,但它需要Python3.5.4或更高版本才能运行。Linux和Mac操作系统支持多进程,Windows支持单进程,这将导致性能差异。在
- 用pip安装
ATTENTION:如果您的设备包含多个版本的python,则可能需要运行以下命令:
python3 -m pip install -U paddle1to2 python3 -m paddle1to2 -h python3 -m paddle1to2 --inpath /path/to/model.py
- 从源安装
git clone https://github.com/T8T9/paddle1to2.git cd paddle1to2 python setup.py sdist bdist_wheel pip install -U ./dist/paddle1to2-*.whl paddle1to2 --help # show help paddle1to2 --inpath /path/to/model.py # upgrade your model from paddle-1.x to paddle-2.0
开发
如果您是开发人员,并且希望快速测试代码,可以在项目目录中运行以下命令:
python -m paddle1to2 --inpath /path/to/model.py
#or
python paddle1to2/main.py --inpath /path/to/model.py
此外,如果要运行特定的重构,可以使用以下命令:
python -m paddle1to2 --inpath /path/to/model.py --refactor <refactor_name>
使用python -m paddle1to2 -h
查看所有重构的完整列表。在
如果要运行所有unittest,请使用命令:
python -m unittest discover paddle1to2/tests/ # or python setup.py test
或使用命令:
python -m unittest paddle1to2/tests/test_refactor.py
运行特定的测试文件。在
更改规范
change_spec
是在中定义的python dict规范py,它定义了重构代码的规则。在
change_spec={"path.to.old_api":{"alias":["path.to.old_api_alias1","path.to1.to2.old_api_alias2",],"update_to":"path.to.new_api","warning":"this api is deprecated.","args_list":["arg1","arg2"],"args_change":[["arg2","arg2_rename"],["arg3",""],["","new_arg","default_value"],],"args_warning":{"arg1":"warning message"},"args_transformer":"_default_transformer",},}
alias
:主别名的别名列表path.to.old_api
,所有别名都将替换为主别名。在update_to
:path.to.old_api
将被这个新api替换(如果指定的话)。在warning
:找到path.to.old_api
时打印指定的警告消息。如果指定了update_to
,则将忽略此字段。在args_list
:是{}的参数列表。在 args_change
:列表列表。它包含以下格式:["arg", "new_arg"]
:重命名参数,例如func(arg=value)
->;func(new_arg=value)
["arg", ""]
:删除参数,例如func(arg=value)
->;func()
["", "new_arg", "default_value"]
:添加一个新参数,例如func(arg=value)
->;func(arg=value, new_arg=default_value)
args_warning
:在applyargs_change
之后打印指定参数的指定警告消息。在args_transformer
:在AST node上执行自定义的转换器,在应用args_change
之后将调用它来进行进一步的重构。在
其他工具
- 查找特定代码段的模式,用法:
find_pattern 'import paddle'
find_pattern
命令将遍历AST中的所有节点,如果您看到所需的代码片段,请键入“y”以获取模式。在
- 在特定代码中查找特定模式的匹配节点,用法:
find_match_node -ss 'import paddle' -ps 'any'
您还可以指定“--print results”选项来获取匹配节点的表示形式,指定“--print lineno”以获取匹配代码的行号。在
致谢
- 项目
标签: