问题标签 [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.
tensorflow.js - 将 tf_op_layers 转换为 tfjs
我正在尝试将有状态的 LSTM 模型从 tf.keras 保存的模型(.h5)转换为 tfjs。由于 tfjs 还不支持有状态的 lstms,我需要处理模型之外的状态。现在,为了实现这一点,我只需要将现有 (.h5) 模型的一部分转换为 tfjs 模型。
我对 Keras 模型的权重进行了以下切片,并成功地将生成的子模型转换为 tfjs 层模型:
来自python代码的片段:
当我尝试将此模型加载到 JS 中tf.loadLayersModel
时,以下是我得到的错误 -
UnhandledPromiseRejectionWarning:错误:未知层:TensorFlowOpLayer。这可能是由于以下原因之一:
该层是在 Python 中定义的,在这种情况下,它需要移植到 TensorFlow.js 或您的 JavaScript 代码。自定义层在 JavaScript 中定义,但未使用 tf.serialization.registerClass() 正确注册。
子模型总结:
我了解针对我的状态处理要求对张量执行的切片、整形和堆叠正在创建 tf_op_layers(我不确定它们是什么或如何管理它们)。现在,我不确定如何在 tfjs 中创建自定义层来加载这个模型。你能帮我创建自定义层tf_op_layer_strided_slice
吗?以及如何处理 -tf_op_layer_Reshape
作为tf_op_layer_stack
tfjs 自定义层。
javascript - 使用自定义 keras 模型识别 tensorflowjs 中的对象
我想在 javascript 中使用 tensorflow 模型进行实时对象检测。为此,我正在关注 tensorflow.org 的本教程:https ://www.tensorflow.org/js/tutorials/conversion/import_keras 我在 keras 中训练了模型,将模型导出为 .h5 格式,将其转换为json 文件,最后导入模型。
这是我的 javascript 代码块的片段,
我要识别的图像是 255 x 255 ,RGB 我收到错误,输入图像是 3 维但预期是 4。我附上了错误的片段。 javascript中的错误
我尝试重新塑造输入图像但无济于事。有人可以帮忙吗?
tensorflow - 使用 TensorflowJS 2.0.1 从本机文件系统加载 tensorfow 模型
我正在尝试将预训练的 Keras 模型加载到我的小型反应应用程序中。由于使用 TensorFlow 2.0 版本,添加和更改的内容很少。我想知道应该如何从本机文件系统加载模型。
- 首先我导入 tensorflowJS
我的目录结构 model.json 和所需的所有 .bin 文件都位于与我引用它们的 App.js 相同的目录中。
加载预训练模型 -文档
不幸的是,我无法获取错误。谁能解释我错过了什么?
javascript - Tensorflow.js 中的图像大小调整方法(resizeBilinear 和 resizeNearestNeighbor)不会返回正确的结果
问题
- resizeBilinear(*1) 和 resizeNearestNeighbor(*2) 有什么区别?特别是, resizeNearestNeighbor 不会返回正确的图像(图像的一半是黑色的)。(图像的一半是黑色的。)
- ResizeBilinear 不会返回正确的分割结果。(图像的一半是灰色的。)这是为什么呢?这与 resizeNearestNeighbor 的结果非常相似。
背景
我想开发一个在 Tensorflow.js 中进行分割的应用程序。幸运的是,我找到了一些 Python 中的分割示例代码。(*3) 我相信我可以通过将在那里获得的 Keras 模型转换为 TFJS 模型来在 Tensorflow.js 中进行分割。我试图调整 Tensorflow.js 中的图像大小,但我无法获得正确的结果。有没有人有什么好主意?
代码
这是我写的源代码。(我不习惯编写 JavaScript。)
从左到右。
- 原始图像
- 原始图像被拍摄并绘制在画布上
- 使用 resizeNearestNeighbor 调整大小并在画布上绘制的原始图像(图像的一半是黑色的)
- 使用 resizeBilinear 调整大小并在画布上绘制的原始图像(看起来正确)
- 使用 resizeBilinear 调整大小并在画布上绘制的原始图像的分割(图像的一半是灰色的)
参考
(*1) https://js.tensorflow.org/api/latest/#image.resizeBilinear
(*2) https://js.tensorflow.org/api/latest/#image.resizeNearestNeighbor
tensorflow - Keras SavedModel 与 Tensorflow SavedModel
我正在阅读 TensorflowJS 转换器的文档和源代码,它明确区分了 Keras SavedModel 和 Tensorflow SavedModel。
格式之间有什么区别以及跨格式支持故事是什么?
tensorflow.js - 转换分片的 Tesorflow 模型
我想在本地反应原生应用程序中使用 tensorflow.js 模型作为资产。问题是网络优化模型在多个文件中使用分片权重。但是反应原生 bundleResourceIO 处理程序只需要一个文件。我尝试使用 tensorflowjs_converter 转换模型。不幸的是没有成功,因为我不确切知道命令对参数的期望。例如,我尝试了以下方法:
有人成功转换模型吗?
tensorflow - Tensorflow:将 H5 层模型转换为 TFJS 版本导致未知层:TensorFlowOpLayer 在 TS 中工作时出错
我正在尝试从存储库运行转换后的模型:https ://github.com/HasnainRaz/Fast-SRGAN 。嗯,转换成功了。但是当我尝试初始化模型时,我看到了错误:"Unknown layer: TensorFlowOpLayer."
. 如果我们调查保存的模型,我们可以看到 TensorFlowOpLayer:
据我了解,这是代码的和平:
keras.layers.UpSampling2D(size=2, interpolation='bilinear')(layer_input)
.
我决定编写自己的课程“TensorFlowOpLayer”。
但它不起作用。有人可以帮助我了解如何写入方法“computeOutputShape”吗?第二个误解,为什么在上图中我们看到了下一层的顺序:
据我了解,TensorFlowOpLayer 层是python 代码中的“UpSampling2D” 。H5模型是通过网站调查的:https ://netron.app
TS中模型的初始化:
就像在python代码中一样:
然后,它是如何使用的:
就像在python代码中一样:
当我添加自己的类“TensorFlowOpLayer”时,我看到了下一个错误:
"expected input1 to have shape [null,null,null,32] but got array with shape [1,96,96,3]."
tensorflow - TensorflowJS:如何在 TFJS 中重置预训练模型的输入/输出形状
对于python 中的预训练模型,我们可以重置输入/输出形状:
我正在尝试在 TFJS 中做同样的事情:
TFJS 不支持模型中的某一层:
我自己写了:
使用模型:
但我得到了错误:
错误:输入 0 与层 p_re_lu 不兼容:输入形状的预期轴 1 的值为 96,但形状为 1,128,128,32。
预训练模型使用 96x96 像素图像进行训练。如果我使用 96x96 图像,它可以工作。但是如果我尝试使用其他尺寸(例如 128x128),它就不起作用了。在 python 中,我们可以轻松地重置输入/输出形状。为什么它在 JS 中不起作用?
tensorflow - `tensorflowjs_converter` 导致浏览器中的模型无法检测到任何对象
我正在从“ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8”为 tensorflow.js 构建对象检测模型。我已经训练了模型并使用tensorflowjs_converter
cli 工具对其进行了转换。当我在 jupyter 中运行模型时,我得到以下输出:
但是当我将模型加载到 tensorflow.js 中时,它没有找到任何边界框。它确实在边界框张量中吐出了一些东西,如下所示:
大多是随机的。这些盒子都没有与之关联的类。最初,我认为 tfjs 模型不太准确,因为它看起来像转换器运行了一些优化。但是在提高了python notebook中的准确率后,tfjs的准确率并没有提高。
看起来没有办法关闭tensorflowjs_converter
优化。真的吗?
还有什么我可以尝试让我的模型在 tfjs 中运行的吗?
这是我的pipeline_file.config
:
这是model.json
转换器创建的文件:
还有我的转换器脚本(物有所值):
javascript - TensorflowJS 后端 CPU 内核 undefined 已注册
我正在使用这些脚本标签加载 TensorFlowJS 库和后端 GPU:
这可行,但它在控制台中给了我这个警告:
您的应用程序包含的操作足够小,可以在 CPU 后端执行,但是找不到 CPU 后端。考虑导入 CPU 后端 (@tensorflow/tfjs-backend-cpu) 以获得更好的性能。
但是当我用这个标签加载后端 CPU 时:
我收到这些错误:
和
如果我同时加载GPU 和 CPU,我只会收到kernel undefined is already registered
警告。
SO和GitHub上的其他一些帖子说某些库可能被加载了两次?但我不能遗漏任何这些脚本标签......