我正在尝试将量化图形加载到Android应用程序中。我的构建文件包含
deps = ["//tensorflow/core:android_tensorflow_lib",
"//tensorflow/contrib/quantization:cc_array_ops",
"//tensorflow/contrib/quantization:cc_math_ops",
"//tensorflow/contrib/quantization:cc_nn_ops",
"//tensorflow/contrib/quantization/kernels:quantized_ops"]
额外的量化deps用于独立的C构建。
由于GEMMLOWP中存在大量错误,我无法使用Bazel进行编译。在Android中包含gemmlowp和量化操作的正确方式是什么?
下面是一个错误示例:
external/gemmlowp/eight_bit_int_gemm/eight_bit_int_gemm.cc:125:13: error: 'int32_t' is not a member of 'std'
MatrixMap<std::int32_t, ResultOrder> result(c, m, n, ldc);
这是在Ubuntu 16.04和Bazel 0.3.0上。
这里有一个要点,它有两次连续尝试构建包的输出——第一次在highwayhash上失败,第二次在gemmlowp上失败。https://gist.github.com/ericdanz/81b799f2e0bbb3cc462aa3c90468c71b
最终,通过在gemmlowp和highwayhash的构建文件中自由添加“-std=c11”,并用android框架替换量化ops中的框架依赖项,它得以编译和运行。不过,它产生的结果却截然不同,运行速度慢了约4倍(26-3200ms vs 6-800 ms)。我会尝试做更深入的调查。
以下是对我有用的东西-它基本上是上面Eric D的所有评论的组合,但我想把所有这些放在一个地方,供遇到这个问题的新手使用:
添加quantized_ops
indeps
tolibtensorflow_demo.so
in the BUILD file for the Android app:
deps = ["//tensorflow/core:android_tensorflow_lib",
"//tensorflow/contrib/quantization/kernels:quantized_ops",]
在tensorflow/contrib/quantization/kernels/BUILD中修改量化操作的
deps
:
deps = [
"//tensorflow/contrib/quantization:cc_array_ops",
"//tensorflow/contrib/quantization:cc_math_ops",
"//tensorflow/contrib/quantization:cc_nn_ops",
"//tensorflow/core:android_tensorflow_lib",
#"//tensorflow/core",
#"//tensorflow/core:framework",
#"//tensorflow/core:lib",
#"//tensorflow/core/kernels:concat_lib_hdrs",
#"//tensorflow/core/kernels:conv_ops",
#"//tensorflow/core/kernels:ops_util_hdrs",
#"//tensorflow/core/kernels:pooling_ops_hdrs",
#"//tensorflow/core/kernels:eigen_helpers",
#"//tensorflow/core/kernels:ops_util",
#"//tensorflow/core/kernels:pooling_ops",
"//third_party/eigen3",
"@gemmlowp//:eight_bit_int_gemm",
],
删除/注释掉
。doc()
部件在tenstorflow/contrib/量化/ops/array_ops.cc,math_ops.cc和nn_ops.cc
在tensorflow/contrib/quantization/BUILD中修改
cc_array_ops
、cc_math_ops
和cc_nn_ops
的deps
:
deps = [
#"//tensorflow/core:framework",
"//tensorflow/core:android_tensorflow_lib",
],
使用
--cxopt=“-std=c 11”
标志运行Android应用程序的bazel构建命令。
问题内容: 我正在为我的Android项目设置ProGuard。我的项目也使用GSON。 我已经研究了ProGuard配置与GSON和Android的兼容性,并遇到了由google-gson https://code.google.com/p/google-gson/source/browse/trunk/examples/android- proguard- 提供的示例示例/proguard.c
问题内容: 如果我为桌面启动它,它运行得很好,但是为我的Android导出后,它在我启动该应用程序后立即崩溃。 所以我的问题…: 它适用于台式机而不适用于我的Android有什么问题? 。 Logcat 我是Java的新手,所以我希望它是正确的部分:x 问题答案: 有一些人例外,logcat说: 这是由于您的模拟器未将gpu用于图形处理,最好的解决方案是使用手机来测试您的应用程序 由于某些原因(可
问题内容: 我正在尝试为Android创建一个仅向SSH服务器发送命令的应用程序。无需响应,我只需要能够发送命令即可。我想知道是否可以使用任何Java库? 不需要高级的东西,只需一个纯粹的连接即可发送命令。 问题答案: 您正在搜索JSch。 其他库是jaramiko,paramiko和trilead- ssh2 。connectbot项目是您可以浏览Trilead源代码的地方。请注意,connec
在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现
我试图量化我的模型(CNN),以便将其转换为量化模型。tflite模型。我将在以下位置阅读教程:https://github.com/tensorflow/tensorflow/tree/r1.13/tensorflow/contrib/quantize#quantization-意识训练 首先,我通过调用以下命令在我的图中引入假量化节点: 但是,当最后我尝试调用此函数以确保图形以正确的格式导出量
问题内容: 我有这个代码: 当我滚动我的回收站视图时,出现此错误: 如何处理此错误并获得第一个可见项目的位置? 问题答案: 我用此代码对其进行了测试,并且对我来说效果很好 我使用了回收视图参数。