无法恢复 TextVectorization 类的图层 - 文本分类

2024-01-31

系统信息 谷歌合作实验室

当我运行官方张量流基本文本分类提供的示例时,一切运行良好,直到模型保存,但是当我加载模型时,它给了我这个错误。

运行时错误:无法恢复 TextVectorization 类的图层。 TextVectorization 类的各层要求将该类提供给模型加载代码,方法是在类 def 上使用 @keras.utils.register_keras_serialized 注册该类并将该文件包含在程序中,或者将该类传递到 keras.utils 中.CustomObjectScope 包装此加载调用。

预期行为:模型应成功加载并处理原始输入

https://colab.research.google.com/gist/amahendrakar/8b65a688dc87ce9ca07ffb0ce50b84c7/44199.ipynb#scrollTo=fEjmSrKIqiiM https://colab.research.google.com/gist/amahendrakar/8b65a688dc87ce9ca07ffb0ce50b84c7/44199.ipynb#scrollTo=fEjmSrKIqiiM

示例链接:https://tensorflow.google.cn/tutorials/keras/text_classification https://tensorflow.google.cn/tutorials/keras/text_classification


我也遇到了这个错误消息(RuntimeError: Unable to restore a layer of class TextVectorization. [...])当我实现(并定制)“基本文本分类”教程中的代码时。

我没有在笔记本中运行代码,而是有两个脚本,一个用于构建、训练和保存模型,另一个用于加载模型并进行预测。 (因此,该错误似乎并不局限于Google Colab)。

这就是我必须做的(参见https://github.com/tensorflow/tensorflow/issues/45231 https://github.com/tensorflow/tensorflow/issues/45231):

首先,我在函数定义之前的第一个脚本中添加了这一行,并再次构建、训练和保存模型:

@tf.keras.utils.register_keras_serializable()
def custom_standardization(input_data):
[...]

# Save model as SavedModel
export_model.save(model_path, save_format='tf')

其次,我还必须在第二个脚本中添加同一行和整个函数定义,以确保如果我重新启动(!)ipython(我当前运行脚本的位置)并且仅运行第二个脚本,它可以正常工作:

@tf.keras.utils.register_keras_serializable()
def custom_standardization(input_data):
      lowercase = tf.strings.lower(input_data)
      stripped_html = tf.strings.regex_replace(lowercase, '<br />', ' ')
      return tf.strings.regex_replace(stripped_html,
                                    '[%s]' % re.escape(string.punctuation),
                                    '')
[...]
# Load model
reloaded_model = tf.keras.models.load_model(model_path)
# Make predictions
predictions = reloaded_model.predict(examples)

注意:如果我在运行第一个脚本后运行第二个脚本而不重新启动 ipython,则会收到此错误:

ValueError: Custom>custom_standardization has already been registered [...]

或者,您可以在构建模型时仅使用矢量化层中的默认标准化方法:

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

无法恢复 TextVectorization 类的图层 - 文本分类 的相关文章

随机推荐

  • 在 Boost Test 框架中测试断言

    我使用 Boost Test 框架对我的 C 代码进行单元测试 并想知道是否可以测试函数是否会断言 是的 听起来有点奇怪 但请耐心听我说 我的许多函数在输入时检查输入参数 断言它们是否无效 对此进行测试将很有用 例如 void MyFunc
  • 如何在不使用 typeid/RTTI 的情况下确定实际对象的类型

    我有一个类层次结构 其中子类派生自父类 在一个地方 我需要将任何类型的对象存储 队列 到列表 list Parent 中 然后从该列表中检索对象 存储时 我存储的是指针 它指向最顶层的父类 检索时 我需要了解它实际上是哪个子对象 以便能够通
  • Django Rest Framework 序列化器单独渲染表单

    我知道如何将序列化器的形式作为一个整体呈现 但我不知道如何单独呈现它 类似于模板上的 django 表单 form name form name errors 我当前的文件和代码如下 模型 py Create your models her
  • HTML 不再在 JLabel(和其他组件)中工作

    我有一个我编写的java小程序 并且已经运行了很长一段时间 在小程序中 我有一堆在文本内容中使用 HTML 的 JLabel 这是允许的 并且已经工作多年 我使用 HTML 的主要原因是允许在 JLabels 中换行 问题 最近 包含 HT
  • 系统头文件/usr/include/i386_types.h错误

    我已经使用 C C 大约 7 个月了 目前正在尝试编写一小组线性代数程序 现在我正在尝试测试我的向量类 但收到错误消息 In file included from usr include machine types h 34 from us
  • Rails 4 博客 /:year/:month/:title 具有清晰的路由

    Rails 4 中还有另一种更简洁的方式来实现路由 例如 blog 2014 8 blog post title blog 2014 8 blog 2014 blog 2014 8 tags tag 1 tag 2 page 4 blog
  • X509Chain.Build()方法解释

    我想验证证书链 我得到了X509Certificate2集合并必须验证所有证书是否构建一条链 通常 为了验证证书链 我应该从叶证书中获取数字签名并检查它是否由根证书签名 but在 NET中我找不到从X509Certificate2目的 因此
  • 在 Ansible 即席命令中使用 Ansible 事实

    是否可以使用通常包含在中的内容ansible facts在 Ansible 即席命令中 例如 我有一个文件位于 tmp myFile在我所有的服务器上 我想做 ansible all i inventory file m fetch a s
  • Python语言-使用OOP求圆心

    class Point def init self initX initY Create a new point at the given coordinates self x initX self y initY def getX sel
  • 以管理员身份运行批处理文件 - Windows 7 - 从网络文件系统命令“运行方式”

    我需要设置程序安装程序的交付 该程序有一个program installer exe 和一个文件夹 我在创建安装程序时无法将其包含在安装程序中 因此 当用户需要安装该程序时 我通过邮件向他发送一个批处理文件 echo off if DEFI
  • 为什么 classOf[A.type] 无法编译?

    的签名Predef classOf https github com scala scala blob bda011524f7619b61b4fcc8172f088d2445e947e src library scala Predef sc
  • 添加跳过按钮以快进 .fadeIn / .fadeOut?

    只是为了澄清一下 当您加载我的网站时 我有一些文本淡入 引用 然后淡出 然后一段新的文字 我的品牌名称 淡入 因为我希望人们有足够的时间阅读第一个文本 引文 所以淡入和淡出有点长 但是我不希望人们在第五次访问该网站并不得不等待后变得不耐烦每
  • 我如何索引这个 numpy 数组? [复制]

    这个问题在这里已经有答案了 给定一个 numpy 矩阵a形状的 5 3 和一个索引向量b形状的 5 索引向量中的每个条目都在 0 到 2 之间 如何创建一个新向量c基于a及其索引向量b Use arange对于另一个维度 c a np ar
  • 使用 Google Cloud 添加计费方式会导致“意外错误”

    我一直在尝试向我的谷歌计算引擎添加计费方法 但没有任何运气 输入我的 Visa 卡详细信息并单击提交按钮后 我总是收到以下消息 发生意外的错误 请稍后再试 我正在尝试创建一个谷歌计算引擎实例 但如果没有启用计费 这是不可能的 我已经尝试通过
  • 如何在输出后将用户输入保持在同一行?

    我正在尝试编写询问用户年龄然后输入的代码 但我希望数字在您输入后出现在问题旁边 我的代码如下所示 System out println Enter a number num1 userIn nextInt 它工作正常 但数字总是出现在下面的
  • sql server 中列总和的算术溢出

    我正在尝试获取列总数 但是当我运行此查询时 出现以下错误 有什么建议吗 SELECT SUM Size as total FROM AllDocs Where DirName LIKE sites test test ERROR Msg 8
  • 如何在核心图轴的末尾设置箭头?

    我发现 Core Plot 是非常好的绘图库 但有一个小问题 我找不到任何方法在绘图轴的末端设置方向箭头 我可能在这里错过了什么吗 Core Plot 尚不支持此功能 您可以在核心图处添加增强请求问题跟踪器 http code google
  • 在 Visual Studio Code 上设置 OmniSharp 的 C# 格式选项?

    我正在尝试利用与 Visual Studio Code 的集成 但无法弄清楚如何设置 C 格式选项 这config json就在我的 Mac 上 OmniSharp exe 旁边 Applications Visual Studio Cod
  • 真正清除终端屏幕[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用clear终端上的命令只会欺骗用户 让他们认为屏幕已被清除 当您使用鼠标滚动时 您仍然可以看到先前命令的输出 当你淹没在文字海啸中时
  • 无法恢复 TextVectorization 类的图层 - 文本分类

    系统信息 谷歌合作实验室 当我运行官方张量流基本文本分类提供的示例时 一切运行良好 直到模型保存 但是当我加载模型时 它给了我这个错误 运行时错误 无法恢复 TextVectorization 类的图层 TextVectorization