Open xingjing1 opened 3 years ago
你好,请获取最新的github代码,重新安装x2paddle即可
pip uninstall x2paddle
git clone https://github.com/PaddlePaddle/X2Paddle.git
cd X2Paddle
git checkout develop
python setup.py install
您好,按照您的方式输出如下信息:
当我跑benchmark时候出现了如下问题:
我是在树莓派上编译的paddle-lite,命令是:
./benchmark_bin
--optimized_model_path=./benchmark_models/hand --warmup=10 --repeats=10 --threads=4 --result_filename=./result.txt`
之前benchmark过resnet的,可以正常输出世界。 转换后的模型如下: inference_model.zip
是转换模型不完全吗?
因为tf的模型输入格式是nhwc, 而paddlelite的benchmark工具可能是针对nchw的输入的,因此会有如上的错误提示
因为tf的模型输入格式是nhwc, 而paddlelite的benchmark工具可能是针对nchw的输入的,因此会有如上的错误提示
好的,,那我自己写一个demo吧
因为tf的模型输入格式是nhwc, 而paddlelite的benchmark工具可能是针对nchw的输入的,因此会有如上的错误提示
您知道有什么简便的方法可以benchmark这个模型吗?
因为tf的模型输入格式是nhwc, 而paddlelite的benchmark工具可能是针对nchw的输入的,因此会有如上的错误提示
您知道有什么简便的方法可以benchmark这个模型吗?
在X2Paddle转换后的生成目录,包含了两个文件夹 inference_model
和model_with_code
,其中在model_with_code
目录中,x2paddle_model.py
是模型的组网代码, 另外还有模型的权重目录,你可以修改x2paddle_model.py
,
例如当前是
from paddle.fluid.initializer import Constant
from paddle.fluid.param_attr import ParamAttr
import paddle.fluid as fluid
import math
def x2paddle_net():
input = fluid.data(dtype='float32', name='input', shape=[1, 256, 256, 3])
conv2d_transpose_0 = fluid.layers.transpose(x=input, perm=[0, 3, 1, 2])
conv2d = fluid.layers.conv2d(input=conv2d_transpose_0, filter_size=[3, 3], param_attr='conv2d_Kernel', stride=[2, 2], num_filters=32, bias_attr='conv2d_Bias', dilation=[1, 1], padding='SAME')
。。。
。。。
将其修改,把输入改成NCHW格式,这样可以去掉第二行的transpose, 注意修改第三行的输入变量名,改成如下代码
from paddle.fluid.initializer import Constant
from paddle.fluid.param_attr import ParamAttr
import paddle.fluid as fluid
import math
def x2paddle_net():
input = fluid.data(dtype='float32', name='input', shape=[1, 3, 256, 256])
conv2d = fluid.layers.conv2d(input=input, filter_size=[3, 3], param_attr='conv2d_Kernel', stride=[2, 2], num_filters=32, bias_attr='conv2d_Bias', dilation=[1, 1], padding='SAME')
通过修改后的组网代码,加载权重,重新调用fluid.io.save_inference_model
即可导出新的部署模型,接着再转成paddlelite的格式,即可使用benchmark工具
因为tf的模型输入格式是nhwc, 而paddlelite的benchmark工具可能是针对nchw的输入的,因此会有如上的错误提示
您知道有什么简便的方法可以benchmark这个模型吗?
在X2Paddle转换后的生成目录,包含了两个文件夹
inference_model
和model_with_code
,其中在model_with_code
目录中,x2paddle_model.py
是模型的组网代码, 另外还有模型的权重目录,你可以修改x2paddle_model.py
,例如当前是
from paddle.fluid.initializer import Constant from paddle.fluid.param_attr import ParamAttr import paddle.fluid as fluid import math def x2paddle_net(): input = fluid.data(dtype='float32', name='input', shape=[1, 256, 256, 3]) conv2d_transpose_0 = fluid.layers.transpose(x=input, perm=[0, 3, 1, 2]) conv2d = fluid.layers.conv2d(input=conv2d_transpose_0, filter_size=[3, 3], param_attr='conv2d_Kernel', stride=[2, 2], num_filters=32, bias_attr='conv2d_Bias', dilation=[1, 1], padding='SAME') 。。。 。。。
将其修改,把输入改成NCHW格式,这样可以去掉第二行的transpose, 注意修改第三行的输入变量名,改成如下代码
from paddle.fluid.initializer import Constant from paddle.fluid.param_attr import ParamAttr import paddle.fluid as fluid import math def x2paddle_net(): input = fluid.data(dtype='float32', name='input', shape=[1, 3, 256, 256]) conv2d = fluid.layers.conv2d(input=input, filter_size=[3, 3], param_attr='conv2d_Kernel', stride=[2, 2], num_filters=32, bias_attr='conv2d_Bias', dilation=[1, 1], padding='SAME')
通过修改后的组网代码,加载权重,重新调用
fluid.io.save_inference_model
即可导出新的部署模型,接着再转成paddlelite的格式,即可使用benchmark工具
👍,多谢,我试试
您好,我刚接触paddle,麻烦啦 我用如下代码,生成新的inference_model: ` import paddle.fluid as fluid import model_with_code.x2paddle_model as model
[input], [classificators, regressors] = model.x2paddle_net()
exe = fluid.Executor(fluid.CPUPlace()) fluid.io.load_persistables(exe, './model_with_code/weights') path = "./inference_model"
fluid.io.save_inference_model(dirname=path, feeded_var_names=['input'],main_program = , target_vars=[classificators, regressors], executor=exe) ` 进行benchmark,然而还是有segmentation fault错误,是我生成的方式有不对吗?
生成的新inference model和原来的model_with_code都在下面这个文件里。 palm.zip
我用checkforlite检测了一下: 原因是这个吗?
这个建议在PaddleLite的Repo下提个issue咨询下 https://github.com/PaddlePaddle/Paddle-Lite
check_for_lite
的原理是查找Paddle-Lite/develop/lite/api/_paddle_use_ops.h
代码下是否有相应OP实现,具体是否支持,还以PaddleLite的文档为准
tensorflow模型:检测手的一个模型, 转换paddle模型时候发生如下错误:
模型如下: palm_detection.zip
使用的方法是官方文档所介绍的方法: https://github.com/PaddlePaddle/X2Paddle
paddlepaddle版本:paddlepaddle-1.8.5-cp36-cp36m-win_amd64.whl paddlelite版本:paddlelite-2.6.3-cp36-cp36m-win_amd64.whl X2paddle版本:x2paddle-0.8.7-py3-none-any.whl