当前位置: 首页 > 知识库问答 >
问题:

将tensorflow/Keras模型转换为tensorflow lite模型时应注意的问题

王建华
2023-03-14

在使用TensorFlow进行实验时,我在将Keras模型转换为TensorFlow Lite时遇到了一个问题。

这是我的设置:

model = models.Sequential()
model.add(layers.Dense(128, activation='relu', input_shape=(1,)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(17, activation='softmax'))
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
...
model.save('Foo.h5')
...
converter = tf.contrib.lite.TFLiteConverter.from_keras_model_file("Foo.h5")
tflite_model = converter.convert()
open("Foo_converted.tflite", "wb").write(tflite_model)
INFO:tensorflow:Froze 6 variables.
INFO:tensorflow:Converted 6 variables to const ops.

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-6-f0613acb22f5> in <module>()
      2 
      3 converter = tf.contrib.lite.TFLiteConverter.from_keras_model_file("Foo.h5")
----> 4 tflite_model = converter.convert()
      5 open("converted_model.tflite", "wb").write(tflite_model)

c:\users\dev\appdata\local\programs\python\python36\lib\site-packages\tensorflow\contrib\lite\python\lite.py in convert(self)
    451           input_tensors=self._input_tensors,
    452           output_tensors=self._output_tensors,
--> 453           **converter_kwargs)
    454     else:
    455       # Graphs without valid tensors cannot be loaded into tf.Session since they

c:\users\dev\appdata\local\programs\python\python36\lib\site-packages\tensorflow\contrib\lite\python\convert.py in toco_convert_impl(input_data, input_tensors, output_tensors, *args, **kwargs)
    340   data = toco_convert_protos(model_flags.SerializeToString(),
    341                              toco_flags.SerializeToString(),
--> 342                              input_data.SerializeToString())
    343   return data
    344 

c:\users\dev\appdata\local\programs\python\python36\lib\site-packages\tensorflow\contrib\lite\python\convert.py in toco_convert_protos(model_flags_str, toco_flags_str, input_data_str)
    133     else:
    134       raise RuntimeError("TOCO failed see console for info.\n%s\n%s\n" %
--> 135                          (stdout, stderr))
    136 
    137 

RuntimeError: TOCO failed see console for info.
b'Traceback (most recent call last):\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\tensorflow\\contrib\\lite\\toco\\python\\tensorflow_wrap_toco.py", line 18, in swig_import_helper\r\n    fp, pathname, description = imp.find_module(\'_tensorflow_wrap_toco\', [dirname(__file__)])\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\imp.py", line 297, in find_module\r\n    raise ImportError(_ERR_MSG.format(name), name=name)\r\nImportError: No module named \'_tensorflow_wrap_toco\'\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\nTraceback (most recent call last):\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\runpy.py", line 193, in _run_module_as_main\r\n    "__main__", mod_spec)\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\runpy.py", line 85, in _run_code\r\n    exec(code, run_globals)\r\n  File "C:\\Users\\Dev\\AppData\\Local\\Programs\\Python\\Python36\\Scripts\\toco_from_protos.exe\\__main__.py", line 5, in <module>\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\tensorflow\\contrib\\lite\\toco\\python\\toco_from_protos.py", line 22, in <module>\r\n    from tensorflow.contrib.lite.toco.python import tensorflow_wrap_toco\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\tensorflow\\contrib\\lite\\toco\\python\\tensorflow_wrap_toco.py", line 28, in <module>\r\n    _tensorflow_wrap_toco = swig_import_helper()\r\n  File "c:\\users\\dev\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\tensorflow\\contrib\\lite\\toco\\python\\tensorflow_wrap_toco.py", line 20, in swig_import_helper\r\n    import _tensorflow_wrap_toco\r\nModuleNotFoundError: No module named \'_tensorflow_wrap_toco\'\r\n'
None

如果有人能解释转换失败的原因,那就太好了。

共有1个答案

澹台臻
2023-03-14

这看起来像https://github.com/tensorflow/tensorflow/issues/22617,其中在Windows版本中缺少_tensorflow_wrap_toco库。我建议您尝试安装最新的Tensorflow版本。

 类似资料:
  • 我目前正在尝试将RNN模型转换为TF lite。在多次尝试失败后,我尝试运行此处存储库中给出的示例。由于层定义位置的变化,这也引发了错误。一旦修复了下面的代码 我继续出错 在使用tf.compat.v1.disable\u eager\u execution()禁用渴望执行后,我得到了错误 有人有在TensorFlow 2.0中将RNN(LSTM、GRU、CustomRNN)转换为TFLite的工

  • 我已经使用tensorflow后端训练了一个DNN,我想在FireBase中托管它。训练好的模型被保存为.meta文件,我尝试使用下面的代码将模型转换为tflite,但我遇到了一些错误。那么我如何将这个模型转换成Tensorflow Lite呢?

  • 我目前在转换张量流时遇到问题。pb模型到TFlite格式。我目前正在遵循谷歌代码实验室的指示,错误说 Traceback(最近调用的最后一次):文件/usr/local/bin/tflite_convert,第5行,在tensorflow.lite.python.tflite_convert导入主重要错误:没有模块命名lite.python.tflite_convert 我正在使用谷歌提供的命令

  • 08-10 11:56:28.905 280 66-28066/android.example.com.TFLiteCamerademo E/MultiWindowProxy:getServiceInstance失败!08-10 11:56:35.675 280 66-28092/Android.example.com.TFLiteCamerademo E/AndroidRuntime:致命异常:

  • (基本)C:\TensorFlow-master>Bazel run--Config=opt\//TensorFlow/contrib/lite/toco:toco--\--input_file=optimized_graph.pb\--output_file=abc.tflite\--input_format=tensorFlow_graphdef\--output_format=tflite\

  • 我们在转换预应变张量流模型时遇到问题,我们将该模型作为以下文件 snapshot_140.ckpt.index snapshot_140.ckpt.meta snapshot_140.ckpt.data-00000-of-00001 当我们使用转换后的tflie文件进行预测时,所有的预测在加载正常的张量流模型时都给出了正确的回归预测 我们得到了上面的这些文件,从ckpt文件到张量流.pb图的转换是