使用 TFLiteConverter 将 Keras 模型转换为量化的 tflite 版本会导致 NOTYPE 错误

2024-01-11

当转换和执行 keras 模型的 8 位量化时,我遇到了一个奇怪的错误,而图像数据集不会发生这种错误。

import tensorflow.python.keras.backend as K
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import load_model
import numpy as np

x_train = np.array([[0.6171875  0.59791666],[0.6171875  0.59791666],[0.6171875  0.59791666]])
y_train = np.array([[0.6171875  0.59791666],[0.6171875  0.59791666],[0.6171875  0.59791666]])


def representative_dataset_gen():
    for i in range(1):
        # Get sample input data as a numpy array in a method of your choosing.
        sample = np.array([0.5,0.6])
        sample = np.expand_dims(sample, axis=0)
        yield [sample]



model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(2,)),
  tf.keras.layers.Dense(12, activation='relu'),
  tf.keras.layers.Dense(2, activation='softmax')
])


model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=1)

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.float32
converter.inference_output_type = tf.float32
converter.representative_dataset = representative_dataset_gen

tflite_quant_model = converter.convert()

这会导致错误

ValueError: Cannot set tensor: Got value of type NOTYPE but expected type FLOAT32 for input 1, name: dense_1_input

此过程过去在使用图像数据时有效,但现在发生了这种情况。尝试了不同的 TF 版本,包括 nightly TF2.1。


显然,问题与输入张量的数据类型有关,默认情况下为 Float64,而不是预期的 Float32。由于 tflite 不知道 Float64,因此它会将其视为 NOTYPE,这令人困惑。

支持的 TF Lite 类型 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/c/common.c#L183

强制转换为 float32 解决了问题

sample = sample.astype(np.float32)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TFLiteConverter 将 Keras 模型转换为量化的 tflite 版本会导致 NOTYPE 错误 的相关文章

随机推荐

  • 3rd 方媒体播放器 SDK 或其他选项

    我正在为我经常访问的多媒体网站编写一个应用程序 但遇到了问题 获取视频流 URL 封装在 mp4 容器中的 h264 并尝试使用本机视频播放器播放它后 失败 这是在我的 Moto Droid 上运行的 运行 2 2 BB 和 2 3 CM7
  • graph.facebook feed 返回一个空数组

    提前致谢 有人可以帮我理解为什么 facebook feed 返回一个空数组吗 data 您需要一个带有 read stream 的用户访问令牌来存储用户帖子 此外 查询的用户需要授予应用程序 read stream 权限 您当前正在使用应
  • 为什么新的 ASP.NET Identity 表停止使用 Guid(唯一标识符类型)作为键?

    我试图理解为什么新的 ASP NET Identity 表停止使用Guid 唯一标识符类型 作为键 相反 它现在使用nvarchar 128 但仍保留一个Guid as a string 这不是一种巨大的浪费吗 uniqueidentifi
  • 如何使用代码备份/恢复 PostgreSQL?

    我努力了this http www codeproject com Articles 37154 PostgreSQL PostGis Operations方法 但它不起作用任何人都可以纠正它或分享一些教程Backup Restore Po
  • Tapestry mixin 究竟是如何工作的?

    我读完后才意识到本文 http tapestry apache org component mixins html我无法向自己解释它是如何工作的以及它可以解决什么问题 是的 它可以用来改变现有组件的行为 但如何限制呢 我能做什么 不能做什么
  • 字典上的 json.dumps,其中键字节为字节

    尝试使用 json dumps 将具有字节类型键的字典对象转换为 json 字典对象的格式事先未知 使用 json dumps 时找到了具有字节值的数组或字典的解决方案 将列表 或字典 中嵌入的字节转换为 str 以与 json dumps
  • OpenCV 2.3 无法编译,未定义的引用错误

    我在 Windows 7 64 位和 Netbeans 7 0 中使用 OpenCV 我尝试使用 MinGW 和 cygwin 编译下一个代码 但都因未定义的引用而失败 当我使用 MAT 或 FLANN 等时 我无法编译 但我添加了所有库
  • WordPress API 按类别获取帖子

    是否可以按类别获取所有帖子 http codex wordpress org XML RPC WordPress API Posts http codex wordpress org XML RPC WordPress API Posts
  • 在身份验证配置中找不到 Pod 执行角色或不具有所有必需的权限。我该如何调试?

    客观的 我希望能够使用 Fargate 部署 AWS EKS 我已经成功地进行了部署node group 然而 当我转而使用 Fargate 时 Pod 似乎都陷入了挂起状态 我当前的代码是什么样的 我正在使用 Terraform 进行配置
  • 在asp.net中发送邮件

    我正在使用 asp net 3 5 和 C 我想从 asp net 发送邮件 因为我从我的托管提供商处获得了一些详细信息 这些是 邮件 MySite net UserName Password 但我无法通过这些详细信息发送邮件 我在 web
  • Oracle TO_DATE 不工作

    我有这个查询不返回任何行 但有些记录的日期大于 90 年 6 月 25 日 为什么它不起作用 SELECT employee id last name hire date FROM employees WHERE hire date gt
  • C- SIGUSR1 在语法上到底是什么

    当我在kill 或signal 函数中使用SIGUSR1时 它在做什么 是宏吗 我读到它是用户定义的 但它是在哪里定义的 我可以制作 SIGUSR10 或以编程方式制作不同信号类型的 数组 吗 用户定义的信号意味着这些信号没有明确的含义 与
  • 使用 apache mod proxy 删除基本身份验证标头

    我有一个 HTTP Basic 安全网站 我用 mod proxy 隐藏了 Tomcat 应用程序服务器 我可以删除 HTTP Basic 标头吗 Tomcat应用程序读取标头并返回401未授权 不需要基本身份验证 因为应用程序使用 coo
  • 如何在 TypeORM 中模拟 EntityManager?

    我有以下代码从我的 NestJS 服务中模拟实体管理器 它在某种程度上有效 但问题在于指定什么findOne应该返回不同的实体 provide getEntityManagerToken useFactory connection Conn
  • R:根据数据框列表中的数据框名称设置列名称

    我有一个很大的数据框列表 如下所示 gt head lst Set1 ID Value 1 A 1 2 B 1 3 C 1 Set2 ID Value 1 A 1 2 D 1 3 E 1 Set3 ID Value 1 B 1 2 C 1
  • 自定义 sp_who 而不授予查看服务器状态

    我需要一个存储过程 可以将其提供给一组用户 使他们能够查看所有正在运行的进程 例如sp who 但我不希望这些用户拥有VIEW SERVER STATE权限 因为这会暴露太多元数据 我还需要允许用户终止进程 这是专门用于该组的开发服务器 我
  • Tinkerpop Gremlin 深度优先搜索顺序

    我有一个非常简单的示例图 我试图对其进行深度优先查询 假设图的边看起来像这样 A gt B A gt C B gt D B gt E C gt F C gt G 从 A 开始的深度优先搜索应该返回 A B D E C F G 但如果我能得到
  • 阻止 CTRL-Click 影响父数据网格

    我有一个 WPF DataGrid 它在 RowDetailsTemplate 中声明了另一个数据网格
  • 使用PIL在App Engine上绘制图像

    我已阅读主题 App Engine PIL 和叠加文本 https stackoverflow com questions 12695480 app engine pil and overlaying text 下面的代码将显示损坏的图像
  • 使用 TFLiteConverter 将 Keras 模型转换为量化的 tflite 版本会导致 NOTYPE 错误

    当转换和执行 keras 模型的 8 位量化时 我遇到了一个奇怪的错误 而图像数据集不会发生这种错误 import tensorflow python keras backend as K import tensorflow as tf f