在TFLite转换期间无法转换tf.map\u fn(至少有一个示例)

2024-04-19 04:44:24 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试转换tf.map_fn时,tflite converter会引发下一个错误:

2020-06-05 22:27:19.003670: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-06-05 22:27:19.003971: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-06-05 22:27:19.004272: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-06-05 22:27:19.004567: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-06-05 22:27:19.004842: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-06-05 22:27:19.005144: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-06-05 22:27:19.005465: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-06-05 22:27:19.006000: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0
2020-06-05 22:27:19.006294: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-06-05 22:27:19.006536: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      0
2020-06-05 22:27:19.006735: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1121] 0:   N
2020-06-05 22:27:19.007280: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 4831 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060, pci bus id: 0000:01:00.0, compute capability: 6.1)
2020-06-05 22:27:19.301593: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-06-05 22:27:19.301969: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 1282 nodes (966), 1999 edges (1683), time = 33.269ms.
2020-06-05 22:27:19.302215: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 1282 nodes (0), 1999 edges (0), time = 15.255ms.
2020-06-05 22:27:19.302403: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_while_body_33337
2020-06-05 22:27:19.302750: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 39 nodes (0), 42 edges (0), time = 1.062ms.
2020-06-05 22:27:19.303076: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 39 nodes (0), 42 edges (0), time = 0.9ms.
2020-06-05 22:27:19.303388: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_png_false_33387
2020-06-05 22:27:19.303619: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 8 nodes (0), 8 edges (0), time = 0.331ms.
2020-06-05 22:27:19.303812: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 8 nodes (0), 8 edges (0), time = 0.34ms.
2020-06-05 22:27:19.304065: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_png_true_33386
2020-06-05 22:27:19.304353: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.304665: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.304962: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_1_while_cond_34702
2020-06-05 22:27:19.305318: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.305696: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.306091: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: decode_image_cond_jpeg_false_33368
2020-06-05 22:27:19.306474: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 11 nodes (0), 12 edges (0), time = 0.448ms.
2020-06-05 22:27:19.306808: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 11 nodes (0), 12 edges (0), time = 0.489ms.
2020-06-05 22:27:19.307104: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_gif_false_33398
2020-06-05 22:27:19.307397: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.307741: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.308084: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: decode_image_cond_jpeg_true_33367
2020-06-05 22:27:19.308466: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.308762: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.309035: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_1_while_body_34703
2020-06-05 22:27:19.309325: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.309541: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.309842: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_while_cond_33336
2020-06-05 22:27:19.310108: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-05 22:27:19.310376: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-05 22:27:19.310642: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_gif_true_33397
2020-06-05 22:27:19.310783: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:19.310998: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-05 22:27:21.532247: I tensorflow/core/grappler/devices.cc:55] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 1
2020-06-05 22:27:21.532847: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session
2020-06-05 22:27:21.535655: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1561] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: GeForce GTX 1060 computeCapability: 6.1
coreClock: 1.733GHz coreCount: 10 deviceMemorySize: 6.00GiB deviceMemoryBandwidth: 178.99GiB/s
2020-06-05 22:27:21.536315: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-06-05 22:27:21.536688: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-06-05 22:27:21.537057: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-06-05 22:27:21.537401: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-06-05 22:27:21.537814: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-06-05 22:27:21.538133: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-06-05 22:27:21.538423: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-06-05 22:27:21.538987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0
2020-06-05 22:27:21.539329: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-06-05 22:27:21.539617: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      0
2020-06-05 22:27:21.540042: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1121] 0:   N
2020-06-05 22:27:21.540561: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 4831 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060, pci bus id: 0000:01:00.0, compute capability: 6.1)
2020-06-05 22:27:21.867862: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-06-05 22:27:21.868148: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 931 nodes (-351), 1333 edges (-666), time = 84.162ms.
2020-06-05 22:27:21.868426: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 931 nodes (0), 1333 edges (0), time = 20.041ms.
2020-06-05 22:27:21.868694: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_1_while_body_34703_frozen
2020-06-05 22:27:21.868934: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 30 nodes (0), 27 edges (0), time = 0.558ms.
2020-06-05 22:27:21.869323: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 30 nodes (0), 27 edges (0), time = 0.322ms.
2020-06-05 22:27:21.869599: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_while_cond_33336_frozen
2020-06-05 22:27:21.869891: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 8 edges (0), time = 0.256ms.
2020-06-05 22:27:21.870168: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 8 edges (0), time = 0.111ms.
2020-06-05 22:27:21.870434: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: decode_image_cond_jpeg_false_33368_frozen
2020-06-05 22:27:21.870756: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 12 edges (0), time = 0.415ms.
2020-06-05 22:27:21.871043: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 12 edges (0), time = 0.195ms.
2020-06-05 22:27:21.871326: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_png_true_33386_frozen
2020-06-05 22:27:21.871605: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 6 nodes (0), 4 edges (0), time = 0.199ms.
2020-06-05 22:27:21.871895: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 6 nodes (0), 4 edges (0), time = 0.067ms.
2020-06-05 22:27:21.872182: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_gif_true_33397_frozen
2020-06-05 22:27:21.872445: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 8 nodes (-7), 8 edges (-6), time = 0.434ms.
2020-06-05 22:27:21.872715: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 8 nodes (0), 8 edges (0), time = 0.093ms.
2020-06-05 22:27:21.872937: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_gif_false_33398_frozen
2020-06-05 22:27:21.873215: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 15 nodes (-4), 18 edges (-2), time = 0.527ms.
2020-06-05 22:27:21.873520: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 15 nodes (0), 18 edges (0), time = 0.164ms.
2020-06-05 22:27:21.873774: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: cond_png_false_33387_frozen
2020-06-05 22:27:21.874025: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 8 nodes (0), 8 edges (0), time = 0.264ms.
2020-06-05 22:27:21.874282: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 8 nodes (0), 8 edges (0), time = 0.129ms.
2020-06-05 22:27:21.874542: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: decode_image_cond_jpeg_true_33367_frozen
2020-06-05 22:27:21.874782: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 9 nodes (-3), 8 edges (-2), time = 0.378ms.
2020-06-05 22:27:21.875115: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 9 nodes (0), 8 edges (0), time = 0.109ms.
2020-06-05 22:27:21.875358: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_1_while_cond_34702_frozen
2020-06-05 22:27:21.875596: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 8 edges (0), time = 0.255ms.
2020-06-05 22:27:21.875888: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 11 nodes (0), 8 edges (0), time = 0.107ms.
2020-06-05 22:27:21.876138: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: map_while_body_33337_frozen
2020-06-05 22:27:21.876413: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 39 nodes (0), 42 edges (0), time = 1.324ms.
2020-06-05 22:27:21.876736: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 39 nodes (0), 42 edges (0), time = 0.491ms.
Traceback (most recent call last):
  File "deploy.py", line 122, in <module>
    generator = run(model.generator, tflite_path)
  File "deploy.py", line 88, in run
    tflite = convert(wrapped)
  File "deploy.py", line 63, in convert
    tflite_model = converter.convert()
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\lite\python\lite.py", line 514, in convert
    result = _toco_convert_impl(
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\lite\python\convert.py", line 491, in toco_convert_impl
    data = toco_convert_protos(
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\lite\python\convert.py", line 227, in toco_convert_protos
    raise ConverterError("See console for info.\n%s\n%s\n" % (stdout, stderr))
tensorflow.lite.python.convert.ConverterError: See console for info.
2020-06-05 22:27:28.323077: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-06-05 22:27:31.116166: W tensorflow/compiler/mlir/lite/python/graphdef_to_tfl_flatbuffer.cc:144] Ignored output_format.
2020-06-05 22:27:31.116208: W tensorflow/compiler/mlir/lite/python/graphdef_to_tfl_flatbuffer.cc:147] Ignored drop_control_dependency.
loc(fused[callsite("map/TensorArrayV2_1@__inference_call_34750"("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\ops\map_fn.py":417:0) at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\util\deprecation.py":574:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\deblurrer-1.0.0-py3.8.egg\deblurrer\model\wrapper.py":42:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py":957:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":3299:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\def_function.py":441:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py":981:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2657:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2777:0 at "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2446:0))))))))), "image_byte_wrapper/StatefulPartitionedCall/map/TensorArrayV2_1"]): error: requires element_shape to be 1D tensor during TF Lite transformation pass
loc(fused[callsite("map/TensorArrayV2_1@__inference_call_34750"("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\ops\map_fn.py":417:0) at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\util\deprecation.py":574:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\deblurrer-1.0.0-py3.8.egg\deblurrer\model\wrapper.py":42:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py":957:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":3299:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\def_function.py":441:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py":981:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2657:0 at callsite("C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2777:0 at "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py":2446:0))))))))), "image_byte_wrapper/StatefulPartitionedCall/map/TensorArrayV2_1"]): error: failed to legalize operation 'tf.TensorListReserve'
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\Scripts\toco_from_protos-script.py", line 11, in <module>
    load_entry_point('tensorflow==2.2.0', 'console_scripts', 'toco_from_protos')()
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\lite\toco\python\toco_from_protos.py", line 93, in main
    app.run(main=execute, argv=[sys.argv[0]] + unparsed)
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\platform\app.py", line 40, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\absl\app.py", line 299, in run
    _run_main(main, args)
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\absl\app.py", line 250, in _run_main
    sys.exit(main(argv))
  File "C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\lite\toco\python\toco_from_protos.py", line 50, in execute
    output_str = _pywrap_toco_api.TocoConvert(
Exception: C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\ops\map_fn.py:417:3: error: requires element_shape to be 1D tensor during TF Lite transformation pass
  return map_fn(
  ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\util\deprecation.py:574:7: note: called from
      return func(*args, **kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\deblurrer-1.0.0-py3.8.egg\deblurrer\model\wrapper.py:42:9: note: called from
        images = tf.map_fn(pre_input, inputs, dtype=tf.float32)
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py:957:13: note: called from
            return autograph.converted_call(
            ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:3299:5: note: called from
    return wrapped_fn(*args, **kwargs)
    ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\def_function.py:441:9: note: called from
        return weak_wrapped_fn().__wrapped__(*args, **kwds)
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py:981:7: note: called from
      func_outputs = python_func(*func_args, **func_kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2657:9: note: called from
        func_graph_module.func_graph_from_py_func(
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2777:7: note: called from
      graph_function = self._create_graph_function(args, kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2446:7: note: called from
      graph_function, _, _ = self._maybe_define_function(args, kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\ops\map_fn.py:417:3: error: failed to legalize operation 'tf.TensorListReserve'
  return map_fn(
  ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\util\deprecation.py:574:7: note: called from
      return func(*args, **kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\deblurrer-1.0.0-py3.8.egg\deblurrer\model\wrapper.py:42:9: note: called from
        images = tf.map_fn(pre_input, inputs, dtype=tf.float32)
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py:957:13: note: called from
            return autograph.converted_call(
            ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:3299:5: note: called from
    return wrapped_fn(*args, **kwargs)
    ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\def_function.py:441:9: note: called from
        return weak_wrapped_fn().__wrapped__(*args, **kwds)
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\framework\func_graph.py:981:7: note: called from
      func_outputs = python_func(*func_args, **func_kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2657:9: note: called from
        func_graph_module.func_graph_from_py_func(
        ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2777:7: note: called from
      graph_function = self._create_graph_function(args, kwargs)
      ^
C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\eager\function.py:2446:7: note: called from
      graph_function, _, _ = self._maybe_define_function(args, kwargs)

特别注意线路Exception: C:\ProgramData\Anaconda3\envs\deblurring-model\lib\site-packages\tensorflow\python\ops\map_fn.py:417:3: error: requires element_shape to be 1D tensor during TF Lite transformation pass。守则:

import tensorflow as tf

class ImageByteWrapper(tf.keras.Model):
    @tf.function(input_signature=[tf.TensorSpec(shape=[None, 1], dtype=tf.string)])
    def call(self, inputs):
        def pre_input(image):
            image = tf.io.decode_image(image)
            image = tf.cast(image, dtype=tf.float32)
            image = (image - 127.0) / 128.0
            return image

        images = tf.map_fn(pre_input, tf.squeeze(inputs, axis=1), dtype=tf.float32)

        return images

def convert(model):
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    #converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
    #converter.target_spec.supported_ops = [
        #tf.lite.OpsSet.TFLITE_BUILTINS,
        #tf.lite.OpsSet.SELECT_TF_OPS,
    #]
    tflite_model = converter.convert()

    return tflite_model

model = ImageByteWrapper()

test_input = tf.random.uniform(shape=[64, 64, 3], minval=0, maxval=255, dtype=tf.int32)
test_input = tf.cast(test_input, dtype=tf.uint8)
test_input = tf.io.encode_jpeg(test_input)
test_input = tf.stack([test_input, test_input])
test_input = tf.reshape(test_input, [-1, 1])

with tf.device('/cpu:0'):
    test_output = model(test_input)

tflite = convert(model)

我尝试了不同的输入形状,如[batch,1,1]或[batch],这会相应地更改fn输入元素,但运气不好,内部TensorArray元素的形状似乎有问题,但我不知道如何控制它

提前谢谢

PD:我在github上打开了一个问题,但合作者似乎很忙:https://github.com/tensorflow/tensorflow/issues/40221如果您希望在那里添加一些详细信息,欢迎您


Tags: pycoremodellibtensorflowfunctionmetaoptimizer