问题标签 [tensorflow-lite]

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 投票
1 回答
155 浏览

tensorflow - 不将 TFLite 用于生产目的的原因是什么?

该网站声明 TFLite 目前作为开发者预览版发布,API 可能会发生变化,无法保证向前和向后兼容性。

但是,如果当前的 API 足以解决问题并且模型运行良好,该怎么办。

是否有任何其他与执行优化或技术相关的原因或其他任何可以详细解释它是否不应该用于生产目的的原因?

0 投票
1 回答
4457 浏览

tensorflow - 如何在 Tensorflow Mobile/Lite 中训练 SSD 模型

我有一个 300*300 图像的数据集以及其中的对象的框和标签。我想使用 SSD 网络来检测图像上的这些对象。我也想在移动设备上做,所以我需要最终模型与 TF Mobile/Lite 兼容。问题是:我应该从哪里开始?

我知道 TF Mobile/Lite 支持 SSD(例如,请参阅https://github.com/tensorflow/tensorflow/issues/15633 )。而且我认为不应该有针对 TF 训练的 SSD 模型,我只需要在我自己的数据集上进行训练。但我只能找到预训练的。我也找不到任何教程,它解释了如何在他自己的数据集上训练现有模型。

所以,更准确地说:

  1. 我的假设是,我应该获得未经训练的模型并使用一些简单的脚本在我自己的数据集上对其进行训练,对吗?
  2. 如果,那么我在哪里可以得到这个模型和训练脚本?
  3. 我是否需要使用桌面 TF 对其进行训练,然后转换为 Mobile/Lite 模型?
0 投票
1 回答
457 浏览

tensorflow - 将 Darkflow tensorflow 模型移植到 Tensorflow Android 相机检测演示

我有一个以 cfg 和权重的形式定制的 YOLO 模型。我使用暗流( https://github.com/thtrieu/darkflow)将此模型转换为 .pb 和 .meta 文件

分析生成的 .pb(/ license.pb) 是

它有“输入”层,但没有“输出”层。我试图将模型移植到 tensorflow 相机演示检测中(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android)。相机预览在一秒钟后停止。安卓异常如下:

如何解决这个问题?我也尝试使用“optimize_for_inference.py”将 .pb 转换为移动优化的 .pb,但没有用。鉴于此,如何在转换后的 .pb 文件中正确定义输入和输出张量/层?或者如何在 TF 相机检测演示中正确移植生成的 .pb?

0 投票
1 回答
426 浏览

python - 尝试使用 toco 转换 TF 模型时出错

我有一个 TF 模型,我需要将其转换为 int8 以便在嵌入式设备中实现。我正在尝试使用 toco 来转换它,但是我无法确定如何使用输入 args 正确实例化 toco:

我了解mean_values输入 arg 存在问题,但是我不了解以下内容的预期用途:

我也尝试过",128,128,",因为我的解释是你不希望批量大小/通道暗淡的平均值,但文档说它需要一个输入,列表中的每个输入都应该匹配 input_arrays 中的一个元素。

我也不确定要为input_arraysarg 放置什么,因为我看到的大多数代码示例都只是使用input,但对我来说,您似乎需要图中节点的名称。

我想我在这里误解了一些东西,但我似乎无法弄清楚。任何帮助,将不胜感激!

0 投票
1 回答
1001 浏览

tensorflow - 如何在 gpu 上运行假量化图?

我从这里下载了一个量化的移动网络,该图包含训练期间的假量化节点,以模拟测试时间输出。我想从这个网络的最后一个逐点卷积层收集输出。

量化的冻结模型包含额外的 fc、softmax 等层,这些层对我的应用程序没有用处。

我有以下用于加载图表的代码。

然后使用 sess.run() 运行,但是我观察到卷积层的输出没有像在移动设备上运行时那样量化(8 位)。

在我的电脑上运行代码时,如何产生与在移动设备上产生的输出相同的输出。

tflite 文件可以用于 pc 上的推理吗?

0 投票
0 回答
145 浏览

android - 二维数组作为Tensorflow android中的输入

我从二维双阵列(128 行,6 列)中的传感器加速度计和陀螺仪收集数据,我想将其用作 Android tensorflow 模型中的输入。我有一个预训练的 CNN 模型。CNN 文件的格式是“.pb”,我不明白如何为我的 CNN 提供 2D 数组。

如果有人可以帮助我,我将不胜感激。

0 投票
2 回答
6991 浏览

tensorflow-lite - 如何设置 Tensorflow Lite C++ 的输入

我正在尝试使用 TensorflowLite 模型测试简单的 tensorflow lite c++ 代码。它有两个浮点数并进行异或。但是,当我更改输入时,输出不会改变。我猜这条线interpreter->typed_tensor<float>(0)[0] = x是错误的,所以输入没有正确应用。我应该如何更改代码才能工作?

这是我的代码

这是我运行代码时出现的消息。

0 投票
0 回答
100 浏览

android - 具有 onehot 编码输出的 TensorFlowInferenceInterface

我已经训练了一个神经网络,它以 4 个浮点值作为输入,并为四个类标签返回一个热编码输出。

例如,{2,12,30,4} -> {0, 0, 1, 0}

训练后的模型生成并保存在 .pb 文件中。然后将该模型导入到我的 android 应用程序的资产文件夹中:

我有以下功能:

但我收到此错误:

java.lang.IllegalArgumentException: 具有 4 个元素的缓冲区与形状为 [4, 4] 的张量不兼容

0 投票
1 回答
748 浏览

tensorflow - 如何构建 tensorflow lite benchmark_model?

当我使用 bazel 构建 tensorflow lite 的 benmark_model 以在 Android 上运行时,它会打印以下错误:

我使用 Ubuntu 16.04、tensorflow r1.8、bazel 0.13.0、android-ndk-r15c、android-sdk-27。我需要针对我的实现对 tensorflow lite 进行基准测试。我在 google 和 stackoverflow 上进行了搜索,但没有人说任何关于构建 tensorflow lite 的 benchmark_model 的内容。

0 投票
2 回答
2175 浏览

tensorflow - 将(融合)BatchNorm 转换为卷积/添加以在 TensorflowLite 上运行 MobileNet

我刚刚完成了 TensorFlow for Poets 2:TFLite 教程(https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#0)。在教程结束时,我能够在手机上运行教程中提供的 MobileNet。

现在,我正在尝试用我使用 Tensorflow 存储库中的 MobileNet 从头开始​​训练的 MobileNet 替换教程中的 MobileNet。但是,当尝试使用 TOCO 时,我遇到了分段错误。如果我使用optimize_for_inference,我会收到类似的警告

警告:张量流:节点 MobilenetV1/Conv2d_0/BatchNorm/FusedBatchNorm 的均值形状不正确,发现 (0,),预期 (32,)

警告:张量流:未找到“MobilenetV1/Conv2d_1_depthwise/BatchNorm/FusedBatchNorm”的预期 Conv2D 输入

我将教程中的 pb 文件图与存储库中的图进行了比较,我注意到批处理规范的表示方式有所不同。基本上,本教程提供的模型的批范数只有一个卷积和一个加法,而来自存储库的模型有一个 FusedBatchNorm 运算符。我也尝试过设置fused=False,但随后出现此错误:

/opt/conda/lib/python3.6/site-packages/h5py/.py:36:FutureWarning __init__:不推荐将 issubdtype 的第二个参数从floatto转换np.floating。将来,它将被视为np.float64 == np.dtype(float).type.

从 ._conv 导入 register_converters 作为 _register_converters

2018-05-09 11:51:38.419786: W tensorflow/contrib/lite/toco/toco_cmdline_flags.cc:178] --input_type 已弃用。这是一个模棱两可的标志,同时设置了 --input_data_types 和 --inference_input_type。如果您尝试使用有关输入数组类型的信息来补充输入文件,请使用 --input_data_type。如果您尝试控制输出文件中实数输入数组的量化/去量化,请使用 --inference_input_type。

2018-05-09 11:51:38.781372:I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.781693: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.781864: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.782019: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不受支持的操作:SquaredDifference

2018-05-09 11:51:38.782181: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不受支持的操作:SquaredDifference

2018-05-09 11:51:38.782329: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.782508: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.782663: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.782851: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.783009:I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.783211: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.783352:I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.783561: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1057] 转换不支持的操作:SquaredDifference

2018-05-09 11:51:38.832089: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] 在一般图形转换之前:656 个运算符,874 个数组(0 量化)

2018-05-09 11:51:39.037810: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] 一般图形转换后通过 1: 222 个运算符,435 个数组(0 量化)

2018-05-09 11:51:39.041366: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] 在去量化图转换之前:222 个运算符,435 个数组(0 个量化)

2018-05-09 11:51:39.044092:I tensorflow/contrib/lite/toco/allocate_transient_arrays.cc:313] 总瞬态数组分配大小:4333824 字节,理论最优值:4333696 字节。

2018-05-09 11:51:39.045179: F tensorflow/contrib/lite/toco/tflite/export.cc:303] 标准 TensorFlow Lite 运行时不支持模型中的某些运算符。如果您有他们的自定义实现,您可以使用 --allow_custom_ops 禁用此错误。以下是您需要自定义实现的运算符列表:Mean、RSQRT、SquaredDifference、Squeeze。

中止(核心转储)

我假设可以FusedBatchNorm使用 TOCO 或其他脚本将运算符转换为卷积/加法组合。真的吗?如果是这样,我在哪里可以找到转换脚本?

教程中 MobileNet 的批量规范表示: 图像1

来自存储库的 MobileNet 的批量规范表示: 图2