问题标签 [tensorflowjs-converter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
738 浏览

javascript - 错误“在没有配置数组的情况下调用 Sequential.fromConfig”

我正在使用 tensorflow js 按照本指南从 keras 加载模型 但是在这行代码中

我收到错误

我能做些什么来解决它。此错误的可能原因是什么?谢谢您的帮助 。

注意:我在我的服务器中启用了 cors,所以我认为这与我的服务器无关。我正在使用本地主机(不是指南中提到的)也如我使用的文档中所述

tfjs.keras.converters.save_keras_model()

0 投票
2 回答
842 浏览

javascript - 相同模型和张量上 tensorflowjs 和 keras 的不同结果

我按照https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html的示例在一些图像上训练了一个 CNN 模型。我的模型代码是相同的,我只是在另一个图像数据集上对其进行了训练:也用于两个类之间的分类。

结果是您在训练集上所期望的:图像被正确分类为 0 或 1。

我按照 https://js.tensorflow.org/tutorials/import-keras.html 的“替代方案:使用 Python API 直接导出到 TF.js 层格式”部分以 te​​nsorflowjs 友好格式保存了 模型

但是,当我尝试使用 javascript 访问 html 页面中的结果时,几乎每个图像(或接近它)都会得到 1:即使图像在 Keras 中给出 0。

我什至将图像保存为 JSON 中的张量,在 Keras 中得到 0,在 TensorflowJS 中得到 1。这是一个错误还是我在某个地方犯了错误?

这是我在 TensorflowJS 中访问 json 的代码:

这是我的python代码:

对于完全相同的数据和相同的模型,我得到了 PREDICTION JS 1 和 PREDICTION PYTHON 0.0:有人在我的代码中看到任何问题吗?

EDIT1:我在 Xubuntu 18.04.1 LTS 上并使用以下软件版本:

EDIT2:我打开了以下问题https://github.com/tensorflow/tfjs/issues/776并已修复。

0 投票
1 回答
685 浏览

tensorflow.js - 加载 saved_model 导致聚集操作的“编译片段着色器失败”

我在 Python 中使用 Tensorflow 来定义和训练模型,然后将其保存到 saved_model 并使用 TensorflowJS 将其加载到网站上。我做了一个下面介绍的最小工作示例,并将问题隔离到收集操作。我正在使用 Windows 7 x64、Python 3.5.2、numpy 1.15.1(强制安装 tensorflowjs - 之前有 15.2)和最新版本的 tensorflowjs 使用简单安装pip install tensorflowjs。浏览器是 Chrome,它都使用 Wamp 在 localhost 上提供。

第 1 步:Python

第 2 步:tfjs-converter 命令

第三步:服务网站:

产生的错误是:

在控制台之上还有:

所以缺少 getIndices ,它没有在导入的 tfjs 脚本中声明,只调用...

任何帮助深表感谢!

0 投票
0 回答
283 浏览

tensorflow - 在具有更多元素的矩阵上调用正交初始化器:可能会导致缓慢

tensorflowjs 版本:0.11.7 Keras
版本:2.0.4

我正在尝试在浏览器上运行 Keras 转换模型。对于转换,我使用了 tensorflowjs 转换器,转换很顺利。但是,在加载时,

在具有超过 2000 (2560000) 个元素的矩阵上调用正交初始化器:可能会导致缓慢。

弹出此消息并发生内存爆炸,最后浏览器停止工作。以下是我的 keras 模型架构: 当我们运行 tensorflowjs 代码来加载上述模型时,会弹出以下警告:

有没有一种方法可以加快正交初始化过程,从而在更短的时间内以更少的努力加载模型?任何帮助将不胜感激。

0 投票
0 回答
619 浏览

javascript - 无法加载 tensorflow JS 模型

我已经将 keras 模型转换为 tensorflowjs 模型。但是当我试图在浏览器中加载相同的内容时,它会给出错误提示

未捕获(承诺中)错误:提供的权重数据没有目标变量:block1_conv1_1/kernel。

我在 keras 的 vgg16 模型上使用了迁移学习。

0 投票
0 回答
317 浏览

javascript - TensorFlow Estimator 到 TensorFlow JS

在 Stack Overflow 社区的帮助下,我开始了解 TensorFlow 的“高级”API 的复杂性,Estimator. 我,也许是愚蠢地认为,如果 TensorFlow 和 TensorFlow JS 相处融洽,很可能是通过EstimatorAPI...

所以在这个Colab中,我有一个简单的自定义Estimator,它被简单地连接起来,以便像.train_and_evaluate工作这样的方法,并且在“训练”之后Estimator通过export_savedmodel.

现在,假设我想继续通过 TensorFlow js 在浏览器中使用这个经过训练的模型。

幸运的是,有一个关于如何为 TensorFlow JS转换 a 的指南:saved_model

虽然论点有描述......

  • --output_node_names输出节点的名称,以逗号分隔。
  • --saved_model_tags 仅适用于 SavedModel 转换,要加载的 MetaGraphDef 的标签,以逗号分隔的格式。默认服务。
  • --signature_name 仅适用于 TensorFlow Hub 模块转换,签名加载。默认为默认值。请参阅https://www.tensorflow.org/hub/common_signatures/

对于Colab中的演示估算器,我不确定应该用什么替换这些。

为什么?对于初学者来说,best_model使用 的导出器serving_input_receiver_fn在通过加载时具有不同的输出

比从

即前者输出的预测特征特征的关键是后者的“输出”和“标签”。

哪个,原谅我的小咆哮,为什么没有Estimator办法加载导出的模型?

所以:

  1. 我的“ output_node_names”是什么?

  2. 因为这是一个 SavedModel,tags我需要什么?

我将不胜感激任何指导。

0 投票
1 回答
7867 浏览

tensorflow - tensorflowjs_converter:SavedModel 文件不存在于:

我按照此处的说明将使用 Python 生成的 Tensorflow 模型导入到 Tensorflow.js 中。

该模型是使用tf.estimatorAPI创建的,该 API 会根据此页面自动保存模型文件。

使用 pip安装后tensorflowjs,运行转换脚本时出现以下错误:

以下是模型文件夹中的文件:

0 投票
1 回答
533 浏览

javascript - 需要找出哪些输出节点名称需要传递给 Tensorflowjs 转换器

我是 Tensorflow 的新手,我开发了一个模型,它使用 Tensorflow、OpenCV 检测一种特殊类型的卡片,我能够在离线模式下使用我的网络摄像头正确检测到卡片,但我想将它迁移到网络(tensorflowjs ) 但我在转换方面面临一些问题。

我有检查点、元数据文件以及冻结的推理图 pb 文件

我使用以下代码生成了节点名称列表

这是使用 tensorflow import_meta_graph()的输出文件 输出节点名称

我关心的是我应该在下面的命令中传递什么输出节点名称

我想在客户端使用真实的网络摄像头运行我现有的模型,任何解决方案和建议将不胜感激

设置细节:

张量流 1.12.0

使用 Anaconda 的 Python 3.5。

0 投票
1 回答
2164 浏览

typescript - 为什么来自 tensorflowjs 的 model.predict() 总是返回相同的预测?

我正在 ionic 3 框架中制作一个用于识别手写字符的应用程序,为此,我正在使用 tensorflowjs。问题是当一切都解决后,预测总是返回相同的值。

模型(使用 tensorflowjs-converter 从 keras 转换而来)本地存储在assets/models/model.json.

我试图预测的图像是从 HTMLCanvasElement 中提取的,您可以在其中绘制字符,然后函数getCanvas()从中检索 ImageData:

[1, 32, 32, 3]然后,计算模型的输入张量,data然后,我将其输入到模型中evaluateModel()。在该函数中,我加载model.jsonwithtf.loadModel()并尝试预测图像的类别:

一切正常,没有任何错误,但是当将输出预测记录到控制台时,它总是返回相同的值。此外,预测数组非常平坦,指出 python 中的模型在测试中达到 99,01% 的准确率

尝试解决此问题时,我想到的唯一两件事是:

  1. ImageData 未正确提取画布绘图,因此预测始终返回相同的值。
  2. 上的权重model.json没有被访问或加载,因此模型返回相同的值。

有任何想法吗?

任何帮助表示赞赏。

0 投票
1 回答
1099 浏览

typescript - 如何使用 tf.loadModel 从 Firebase 存储加载模型?

我正在 ionic3 框架中开发一个用于识别绘制字符的应用程序,但我在导入模型时遇到了问题。tensorflowjs_converter我以两种不同的方式将模型从 Keras(转换为)导入到我的 ionic3 应用程序中:

  1. model.json权重文件(分片)放置在文件夹/assets/models中。
  2. model.json权重文件(分片)托管在 Firebase 存储中。

使用第一种方法在浏览器中启动应用程序时,模型和权重已正确加载,并且我能够预测类。但是当启动应用程序时,使用相同的方法进入我的 Android 设备ionic cordova run android --device,模型似乎没有从权重文件中检索数据,因为它给出了以下错误:

Based on the provided shape, [3, 3, 32, 64], the tensor should have 18432 values but has 917.

现在,我尝试将文件托管在 Firebase 存储中以尝试解决此问题。我从存储中检索,但在浏览器和设备中model.json仍然得到与上述相同的错误。

根据在应用程序中本地存储碎片和模型的经验,我得出的结论是,无论哪种方式,设备都无法识别碎片。

此外,当在 device 中使用 firebase 存储方法时,当尝试从 url 获取模型时,我发现以下错误:Failed to fetch.

这是检索分片和模型的代码:

modelURLshards包含来自 firebase 存储的下载 url。模型和分片保持在同一级别:

因此,我将模型的下载 url 传递到tf.loadModel

那么,有什么方法可以将碎片传递到tf.loadModel(),从 firebase 存储中获取,以便在我的设备和浏览器中检索从模型中预测所需的所有数据?

谢谢您的帮助。