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

我如何转换张量流2.0估计模型到张量流精简版?

徐文斌
2023-03-14

我下面的代码产生了常规的tensorflow模型,但当我试图将其转换为tensorflow lite时,它不起作用,我遵循了以下文档。

https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started

export_dir = "tmp"
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec(feat_cols))

estimator.export_saved_model(export_dir, serving_input_fn)

# Convert the model.
converter = tf.lite.TFLiteConverter.from_saved_model("tmp/1571728920/saved_model.pb")
tflite_model = converter.convert()

错误信息

Traceback (most recent call last):
  File "C:/Users/Dacorie Smith/PycharmProjects/JamaicaClassOneNotifableModels/ClassOneModels.py", line 208, in <module>
    tflite_model = converter.convert()
  File "C:\Users\Dacorie Smith\PycharmProjects\JamaicaClassOneNotifableModels\venv\lib\site-packages\tensorflow_core\lite\python\lite.py", line 400, in convert
    raise ValueError("This converter can only convert a single "
ValueError: This converter can only convert a single ConcreteFunction. Converting multiple functions is under development.

文档摘录

TensorFlow Lite转换器TensorFlow Lite转换器是一种可作为Python API使用的工具,可将训练好的TensorFlow模型转换为TensorFlow Lite格式。它还可以引入优化,这些在第4节优化您的模型中介绍。

以下示例显示了将TensorFlow SavedModel转换为TensorFlow Lite格式:

导入张量流作为 tf

converter=tf.lite.TFLiteConverter。from_saved_model(saved_model_dir)tflite_model=转换器。convert()打开(“converted_model.tflite”,“wb”).write(tflite_model)

共有1个答案

钱和安
2023-03-14

尝试使用一个具体的函数

export_dir = "tmp"
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec(feat_cols))

estimator.export_saved_model(export_dir, serving_input_fn)

# Convert the model.
saved_model_obj = tf.saved_model.load(export_dir="tmp/1571728920/")
concrete_func = saved_model_obj.signatures['serving_default']

converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])

# print(saved_model_obj.signatures.keys())
# converter.optimizations = [tf.lite.Optimize.DEFAULT]
# converter.experimental_new_converter = True

tflite_model = converter.convert()

serving_default是“已保存的模型”中签名的默认密钥。

如果不起作用,尝试取消对< code > converter . experimental _ new _ converter = True 及其上面两行的注释。

简短的解释

基于具体功能指南

TensorFlow 2中的急切执行会立即计算操作,而无需构建图形。要保存模型,您需要包装在python callables:a concrete functions中的graph/s。

 类似资料:
  • 这里是一个初学者,你会看到:)我试图将我的keras (.h5)训练模型转换为TensorFlow Lite格式,但我有以下错误; 属性错误: 类型对象 “TFLite转换器” 没有属性 “from_keras_model”

  • 我有一个保存在.pb文件中的模型,它工作正常,但当我使用命令tflite_convert或python api将其转换为tflite模型时,结果是错误的。我发现权重在转换后发生了变化。.pb文件中第一个卷积层的权重如下: 和第一卷积层的权重。tflite文件如下: 似乎有一些关系。 张量流版本是1.12。 命令是 还有另一个类似的问题没有答案:tflite权重

  • 我试图在张量流图中使用条件随机场损失。 我正在执行序列标记任务: 我有一系列元素作为输入。每个元素可以属于三个不同类中的一个。类以一种热编码方式表示:属于类0的元素由向量[表示。 我的输入标签(y)有大小(xx)。 我的网络产生相同形状的日志。 假设我所有的序列都有长度4。 这是我的代码: 我得到以下错误: 文件“/usr/local/lib/python2.7/dist-packages/ten

  • 这是我当前抓取图像类型的代码。一旦它检测到了狗,我会试着让它看到检测的准确性。希望这有道理?

  • 我正在运行一个使用Python 3.7的代码。5使用TensorFlow 2.0进行MNIST分类。我使用的是TensorFlow 2.0中的EarlyStating,我对它的回调是: 根据Earlystoping-TensorFlow 2.0页面,min_delta参数的定义如下: 最小增量:被监测数量的最小变化被视为改进,即小于最小增量的绝对变化将被视为无改进。 培训60000个样本,验证10