首页 > 编程问答 >tensorflowjs_converter 实用程序向导致错误的变量名称添加后缀

tensorflowjs_converter 实用程序向导致错误的变量名称添加后缀

时间:2024-07-21 12:59:37浏览次数:7  
标签:javascript python tensorflow tensorflow.js tensorflowjs-converter

我正在尝试使用tensorflowjs_converter 将我在python 中训练的模型(使用tensorflow)转换为JSON 层格式,以便我可以在网络上运行它。我安装了最新版本,并转换了测试模型。对于这个模型,它按预期提供了 model.json .bin 文件,但是当我在网络上运行它时,我遇到了错误:

Uncaught (in promise) Error: Provided weight data has no target variable: sequential/conv2d/kernel
    at a.value (container.js:643:15)
    at models.js:331:11
    at h (tf.min.js:17:2100)
    at Generator.<anonymous> (tf.min.js:17:3441)
    at Generator.next (tf.min.js:17:2463)
    at u (tf.min.js:17:8324)
    at o (tf.min.js:17:8527)

我用来生成 .h5 文件的代码: model.save("mnist_model.h5") (如果需要,可以提供包括培训在内的所有代码)

我用来在网络上运行模型的代码:

const modelPath = "new_model/model.json"

const model = await tf.loadLayersModel(modelPath, strict=false)

版本信息:

python         3.9.13  
tensorflow     2.16.2  
tensorflowjs   4.20.0  
numpy          1.26.4  

进行一些搜索后(查找“错误:假设重量数据没有目标变量:"),我发现 这个堆栈溢出问题 这个github问题 提出了同样的问题。

堆栈溢出问题没有用因为我计划构建一个更复杂的模型,手动(甚至编写脚本来)修复模型文件中的错误将非常乏味。

github问题建议了多种解决方案,但这些解决方案都不适合我加载模型一次(这就是我已经在做的事情),使用命令行工具而不是Python代码(两种方法都不起作用),在函数调用中添加 false (他们正在使用 tf.loadModel ,当我使用它时,它已被弃用)我正在使用 tf.loadLayersModel,因为该帖子已经有 6 年历史了),运行 keras.backend.clear_session() 或 tf.keras.backend.clear_session() (不起作用),然后在 colab 中重新启动会话并运行每个单元一次(没用)。


遇到的问题似乎是由 Tensorflow.js 版本和用来保存模型的 Tensorflow 版本之间的兼容性问题引起的。 虽然没有明确提及它,但我猜想在创建 mnist_model.h5 文件时正在使用 Tensorflow 2.x。

以下是一些可能解决此问题的步骤:

1. 尝试使用旧版 Tensorflow.js 加载器:

Tensorflow.js 提供了一个旧版加载器,该加载器可能与使用 Tensorflow 2.x 创建的模型更加兼容。 尝试用以下代码替换的模型加载代码:

```javascript import * as tf from '@tensorflow/tfjs'; import { loadGraphModel } from '@tensorflow/tfjs-converter';

const model = await loadGraphModel("new_model/model.json"); ```

这将使用旧版图模型加载器,该加载器可能可以正确处理的权重文件。

2. 降级的 Tensorflow.js 版本:

如果旧版加载器不起作用,则可以尝试降级 Tensorflow.js 版本。 已知 Tensorflow.js 版本 3.x 与使用 Tensorflow 2.x 创建的模型具有更好的兼容性。

可以使用 npm 或 yarn 降级的 Tensorflow.js 版本:

npm install @tensorflow/[email protected]

3.x.x 替换为要使用的实际 3.x 版本。

3. 使用 Tensorflow.js 重新训练的模型:

如果可能,请考虑直接在 Tensorflow.js 中重新训练的模型。 这将确保与 Tensorflow.js 的最大兼容性,并避免转换问题。

可以使用 Tensorflow.js 中的 Layers API 或导入预先训练的模型并对其进行微调。

4. 检查变量名称:

确保的模型中没有包含无效字符(如空格或特殊字符)的变量名称。 这些字符可能会在转换过程中引起问题。 如果存在,请将它们重命名为仅包含字母数字字符和下划线的名称。

如果尝试了这些步骤但仍然遇到问题,请提供以下附加信息,以便我进一步帮助:

  • 用于训练模型的 Tensorflow 版本。
  • 的模型架构(例如,层数、层类型)。
  • 训练模型时使用的代码片段。

提供此信息将有助于我更准确地诊断问题并提供更具体的解决方案。

标签:javascript,python,tensorflow,tensorflow.js,tensorflowjs-converter
From: 78774410

相关文章

  • 【python】Python高阶函数--sorted函数的高阶用法解析与应用实战
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 超详细Python教程——异步任务和定时任务
    异步任务和定时任务在Web应用中,如果一个请求执行了耗时间的操作或者该请求的执行时间无法确定,而且对于用户来说只需要知道服务器接收了他的请求,并不需要马上得到请求的执行结果,这样的操作我们就应该对其进行异步化处理。如果说使用缓存是优化网站性能的第一要义,那么将耗时......
  • Python 中的模 (%) 运算符如何处理负数?
    %运算符在Python中到底是如何工作的,特别是在涉及负数时?例如,为什么-5%4求值为3,而不是-1?在Python中,模运算符(%)遵循以下规则:a%b=a-(b*floor(a/b))其中:a是被除数。......
  • 如何使用 python 更新设备孪生?
    我目前正在尝试使用python更新设备孪生中的属性。但由于SSL错误而无法执行此操作。下面是代码fromazure.iot.hubimportIoTHubRegistryManagerimportcertifiimportssl#ConnecttoIoTHubandsendmessagetodeviceCONNECTION_STRING="HostName=iothub-j......
  • 【Python将字符串连接在一起】
    当然,Python是一个功能丰富且灵活的语言,有许多技巧和最佳实践可以帮助你更有效地编写代码。以下是一些常见的Python技巧:列表推导式(ListComprehensions):这是一种简洁的构建列表的方法。它比使用循环更加清晰和Pythonic。[x*2forxinrange(5)]#输出:[0,2,4,6,......
  • 我心中的王者:Python-第2章 认识变量与基本数学运算
    我心中的王者:Python-第2章认识变量与基本数学运算本章将从基本数学运算开始,一步一步讲解变量的使用与命名,接着介绍Python的算术运算。2-1用Python做计算假设读者到麦当劳打工,一小时可以获得120元时薪,如果想计算一天工作8小时,可以获得多少工资?我们可以用计算器执行“1......
  • 【Dison夏令营 Day 25】用Python写个2048
    在本文中,我们将用python代码和逻辑来设计一款你经常在智能手机上玩的2048游戏。如果您对该游戏不熟悉,强烈建议您先玩一下该游戏,以便了解其基本功能。如何玩2048.NET?1.有一个4*4的网格,可以填入任何数字。一开始,随机填入两个2的单元格。其余单元格为空。我们......
  • python入门基础——新手必看
    前言随着人工智能,大数据的发展。python是当前时代最流行,可以在数据处理、web开发、人工智能等多个领域。它的语法简洁、开发效率高、可移植性强,并且可以和其他变成语言(比如C++)轻松衔接,本文主要讲述一些python的变量,基本数据类型,输入、输出,数据类型的转换,运算符等一些必需的......
  • python中逗号运算符的含义
    我理解了python中逗号运算符的简单概念。例如,x0,sigma=0,0.1表示x0=0,sigma=0.1。但我获得了一个代码,其中有一行如下所示。y,xe=np.histogram(np.random.normal(x0,sigma,1000))其中y和xe的输出如下。yOut[10]:array([3,17,58,136,216,25......
  • 【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/
    ......