diff --git a/FAQ.md b/FAQ.md index 4c087d71feb93714d47076216146cece2e317651..ebdc9eabcce18d3088d3aab81e28c7744b5a90db 100644 --- a/FAQ.md +++ b/FAQ.md @@ -5,29 +5,10 @@ A:该提示信息表示无法从TensorFlow的pb模型中获取到输入tensor( **Q2. TensorFlow模型转换失败怎么解决?** -A: 目前TensorFlow模型转换失败存在几个问题。1) 存在暂未支持的OP,此信息会在转换时输出; 2) NHWC优化导致部分参数出错;3)Batch维度带来的出错 4)其它 - -对于(1)问题,建议自行添加或发起Issue; - -其中(2)、(3)、(4)问题目前没有明确的报错信息,当您遇到模型转换失败时,请尝试如下的步骤后,再进行转换测试 - +A: 如果并非是由缺少OP导致,那可能是由于TensorFlow模型转换时(NHWC->NCHW格式转换导致),在这种情况下,可以采用关闭格式优化,同时固化输入大小的方式,继续尝试转换,见如下命令,转换过程中,根据提示,输入相应tensor的固化shape大小 ``` x2paddle -f tensorflow -m tf.pb -s pd-model --without_data_format_optimization --define_input_shape ``` -#### without_data_format_optimization : 关闭NHWC优化 -TensorFlow的CV模型,大多的输入格式为`NHWC`,而Paddle目前仅支持`NCHW`,如若直接转换,需要在conv2d、pool2d等操作前后添加transpose解决,这样会带来性能的损耗。X2Paddle在模型转换过程中,对此问题进行了优化,避免transpose操作带来的性能问题,但目前仅在部分模型上进行了测试,不一定适用于其它模型,因此,如若模型转换存在问题时,我们建议你关闭NHWC的优化。 - -在模型转换时添加参数 --without_data_format_optimization -``` -x2paddle -f tensorflow -m tf.pb -s pd-model --without_data_format_optimization -``` - -### define_input_shape : 固定Batch大小 -受限于不同框架的运行机制,在转换过程中,Batch维度也有一定可能会带来模型转换失败的问题。可以尝试固定Batch维度后再转换 - -在模型转换时添加参数 --define_input_shape -``` -x2paddle -f tensorflow -m tf.pb -s pd-model --define_input_shape -``` -如原tensorflow模型的输入shape为`[None, 224, 224, 3]`,可添加参数后,根据提示,把输入的shape修改为`[2, 224, 224, 3]` +> 目前Tensorflow的CV模型大部分均为`NHWC`的输入格式,而Paddle的默认输入格式为`NCHW`,因此X2Paddle在转换过程中,会对如`axis`, `shape`等参数进行转换,适应Paddle的NCHW格式。但在这种情况下,可能会由于TensorFlow模型太复杂,导致出错。 +> X2Paddle默认情况,TensorFlow模型转换后得到的Paddle模型为`NCHW`的输入格式。但在指定`--withou_data_format_optimization`后,转换后的Paddle模型输入格式也同样为`NHWC`。