16
16
from x2paddle import program
17
17
import argparse
18
18
import sys
19
+ import logging
19
20
20
21
21
22
def arg_parser ():
@@ -132,20 +133,20 @@ def tf2paddle(model_path,
132
133
import tensorflow as tf
133
134
version = tf .__version__
134
135
if version >= '2.0.0' or version < '1.0.0' :
135
- print (
136
+ logging . info (
136
137
"[ERROR] 1.0.0<=tensorflow<2.0.0 is required, and v1.14.0 is recommended"
137
138
)
138
139
return
139
140
except :
140
- print (
141
+ logging . info (
141
142
"[ERROR] Tensorflow is not installed, use \" pip install tensorflow\" ."
142
143
)
143
144
return
144
145
145
146
from x2paddle .decoder .tf_decoder import TFDecoder
146
147
from x2paddle .op_mapper .tf2paddle .tf_op_mapper import TFOpMapper
147
148
148
- print ("Now translating model from tensorflow to paddle." )
149
+ logging . info ("Now translating model from tensorflow to paddle." )
149
150
model = TFDecoder (model_path , define_input_shape = define_input_shape )
150
151
mapper = TFOpMapper (model )
151
152
mapper .paddle_graph .build ()
@@ -173,15 +174,15 @@ def caffe2paddle(proto_file,
173
174
or (int (ver_part [0 ]) > 3 ):
174
175
version_satisfy = True
175
176
assert version_satisfy , '[ERROR] google.protobuf >= 3.6.0 is required'
176
- print ("Now translating model from caffe to paddle." )
177
+ logging . info ("Now translating model from caffe to paddle." )
177
178
model = CaffeDecoder (proto_file , weight_file , caffe_proto )
178
179
mapper = CaffeOpMapper (model )
179
180
mapper .paddle_graph .build ()
180
- print ("Model optimizing ..." )
181
+ logging . info ("Model optimizing ..." )
181
182
from x2paddle .optimizer .optimizer import GraphOptimizer
182
183
graph_opt = GraphOptimizer (source_frame = "caffe" )
183
184
graph_opt .optimize (mapper .paddle_graph )
184
- print ("Model optimized." )
185
+ logging . info ("Model optimized." )
185
186
mapper .paddle_graph .gen_model (save_dir )
186
187
if convert_to_lite :
187
188
convert2lite (save_dir , lite_valid_places , lite_model_type )
@@ -199,12 +200,13 @@ def onnx2paddle(model_path,
199
200
v0 , v1 , v2 = version .split ('.' )
200
201
version_sum = int (v0 ) * 100 + int (v1 ) * 10 + int (v2 )
201
202
if version_sum < 160 :
202
- print ("[ERROR] onnx>=1.6.0 is required" )
203
+ logging . info ("[ERROR] onnx>=1.6.0 is required" )
203
204
return
204
205
except :
205
- print ("[ERROR] onnx is not installed, use \" pip install onnx==1.6.0\" ." )
206
+ logging .info (
207
+ "[ERROR] onnx is not installed, use \" pip install onnx==1.6.0\" ." )
206
208
return
207
- print ("Now translating model from onnx to paddle." )
209
+ logging . info ("Now translating model from onnx to paddle." )
208
210
209
211
from x2paddle .decoder .onnx_decoder import ONNXDecoder
210
212
from x2paddle .op_mapper .onnx2paddle .onnx_op_mapper import ONNXOpMapper
@@ -227,17 +229,24 @@ def pytorch2paddle(module,
227
229
try :
228
230
import torch
229
231
version = torch .__version__
230
- ver_part = version .split ('.' )
231
- print (ver_part )
232
- if int (ver_part [1 ]) < 5 :
233
- print ("[ERROR] pytorch>=1.5.0 is required" )
232
+ v0 , v1 , v2 = version .split ('.' )
233
+ # Avoid the situation where the version is equal to 1.7.0+cu101
234
+ if '+' in v2 :
235
+ v2 = v2 .split ('+' )[0 ]
236
+ version_sum = int (v0 ) * 100 + int (v1 ) * 10 + int (v2 )
237
+ if version_sum < 150 :
238
+ logging .info (
239
+ "[ERROR] pytorch>=1.5.0 is required, 1.6.0 is the most recommended"
240
+ )
234
241
return
242
+ if version_sum > 160 :
243
+ logging .info ("[WARNING] pytorch==1.6.0 is recommended" )
235
244
except :
236
- print (
237
- "[ERROR] Pytorch is not installed, use \" pip install torch==1.5 .0 torchvision\" ."
245
+ logging . info (
246
+ "[ERROR] Pytorch is not installed, use \" pip install torch==1.6 .0 torchvision\" ."
238
247
)
239
248
return
240
- print ("Now translating model from pytorch to paddle." )
249
+ logging . info ("Now translating model from pytorch to paddle." )
241
250
242
251
from x2paddle .decoder .pytorch_decoder import ScriptDecoder , TraceDecoder
243
252
from x2paddle .op_mapper .pytorch2paddle .pytorch_op_mapper import PyTorchOpMapper
@@ -248,30 +257,32 @@ def pytorch2paddle(module,
248
257
model = ScriptDecoder (module , input_examples )
249
258
mapper = PyTorchOpMapper (model )
250
259
mapper .paddle_graph .build ()
251
- print ("Model optimizing ..." )
260
+ logging . info ("Model optimizing ..." )
252
261
from x2paddle .optimizer .optimizer import GraphOptimizer
253
262
graph_opt = GraphOptimizer (source_frame = "pytorch" , jit_type = jit_type )
254
263
graph_opt .optimize (mapper .paddle_graph )
255
- print ("Model optimized." )
264
+ logging . info ("Model optimized." )
256
265
mapper .paddle_graph .gen_model (save_dir , jit_type = jit_type )
257
266
if convert_to_lite :
258
267
convert2lite (save_dir , lite_valid_places , lite_model_type )
259
268
260
269
261
270
def main ():
271
+ logging .basicConfig (level = logging .INFO )
262
272
if len (sys .argv ) < 2 :
263
- print ("Use \" x2paddle -h\" to print the help information" )
264
- print ("For more information, please follow our github repo below:)" )
265
- print ("\n Github: https://github.com/PaddlePaddle/X2Paddle.git\n " )
273
+ logging .info ("Use \" x2paddle -h\" to print the help information" )
274
+ logging .info (
275
+ "For more information, please follow our github repo below:)" )
276
+ logging .info ("\n Github: https://github.com/PaddlePaddle/X2Paddle.git\n " )
266
277
return
267
278
268
279
parser = arg_parser ()
269
280
args = parser .parse_args ()
270
281
271
282
if args .version :
272
283
import x2paddle
273
- print ("x2paddle-{} with python>=3.5, paddlepaddle>=1.6.0\n " .format (
274
- x2paddle .__version__ ))
284
+ logging . info ("x2paddle-{} with python>=3.5, paddlepaddle>=1.6.0\n " .
285
+ format ( x2paddle .__version__ ))
275
286
return
276
287
277
288
if not args .convert_torch_project :
@@ -282,18 +293,19 @@ def main():
282
293
import platform
283
294
v0 , v1 , v2 = platform .python_version ().split ('.' )
284
295
if not (int (v0 ) >= 3 and int (v1 ) >= 5 ):
285
- print ("[ERROR] python>=3.5 is required" )
296
+ logging . info ("[ERROR] python>=3.5 is required" )
286
297
return
287
298
import paddle
288
299
v0 , v1 , v2 = paddle .__version__ .split ('.' )
289
- print ("paddle.__version__ = {}" .format (paddle .__version__ ))
300
+ logging . info ("paddle.__version__ = {}" .format (paddle .__version__ ))
290
301
if v0 == '0' and v1 == '0' and v2 == '0' :
291
- print ("[WARNING] You are use develop version of paddlepaddle" )
302
+ logging .info (
303
+ "[WARNING] You are use develop version of paddlepaddle" )
292
304
elif int (v0 ) != 2 or int (v1 ) < 0 :
293
- print ("[ERROR] paddlepaddle>=2.0.0 is required" )
305
+ logging . info ("[ERROR] paddlepaddle>=2.0.0 is required" )
294
306
return
295
307
except :
296
- print (
308
+ logging . info (
297
309
"[ERROR] paddlepaddle not installed, use \" pip install paddlepaddle\" "
298
310
)
299
311
@@ -334,7 +346,7 @@ def main():
334
346
lite_valid_places = args .lite_valid_places ,
335
347
lite_model_type = args .lite_model_type )
336
348
elif args .framework == "paddle2onnx" :
337
- print (
349
+ logging . info (
338
350
"Paddle to ONNX tool has been migrated to the new github: https://github.com/PaddlePaddle/paddle2onnx"
339
351
)
340
352
0 commit comments