Tensorflow移动应用程序:不是有效的TensorFlow图形序列化:NodeDef提到attr'dilations'不在Op中

问题描述 投票:3回答:3

我尝试在qazxsw poi的示例中替换graph.pb文件但是它无法在Andriod中启动并出现错误:

不是有效的TensorFlow图形序列化:NodeDef提到attr'dilations'不在Op name = Conv2D中。

https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2

如何使用正确的Conv2D graphDef生成推理pb文件?

android tensorflow
3个回答
5
投票

我有同样的问题,并试图遵循上述解决方法。 (没有成功)

但后来我重新评估了原来的错误。 “版本未与Tensorflow匹配”

这导致我(显而易见的)简单的解决方案对我有用。

验证笔记本电脑上使用的Tensorflow版本是否构建1.5.0

在Android版本中设置相同的版本。拍前额....

12-16 15:06:24.986 4310-4310/org.tensorflow.demo E/AndroidRuntime: Caused by: java.io.IOException: Not a valid TensorFlow Graph serialization: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_FLOAT]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]>; NodeDef: conv0/Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](truediv, conv0/W). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.loadGraph(TensorFlowInferenceInterface.java:392)

2
投票

确保将其放在app gradle文件中。

dependencies {
            compile 'org.tensorflow:tensorflow-android:1.5.0'
        }

1
投票

我遇到过同样的问题。正如dependencies { compile 'org.tensorflow:tensorflow-android:+' // compile 'org.tensorflow:tensorflow-android:1.2.0-preview' } 所解释的,此错误似乎是由于用于运行训练脚本的TensorFlow版本与Android应用程序中包含的库版本之间的版本不匹配所致。

要解决此问题,您可以尝试以下操作:

  • here下载每晚构建libtensorflow_ *
  • 在根Android演示项目目录中创建一个名为“libs”的目录(除了“assets”,“src”,“jni”等)并复制(下载)http://ci.tensorflow.org/view/Nightly/job/nightly-android/lastSuccessfulBuild/artifact/out/
  • 在“libs”里面,创建一个名为“armeabi-v7a”的目录(或者与你的架构匹配的任何东西)并复制下载的libandroid_tensorflow_inference_java.jarlibtensorflow_demo.so文件(对应于该架构)
  • 在build.gradle中,设置libtensorflow_inference.so并修改最后的“依赖项”,如下所示: dependencies {if(nativeBuildSystem =='cmake'|| nativeBuildSystem =='none'){implementation files('libs / libandroid_tensorflow_inference_java.jar')}}
  • 编译,上传到测试设备并运行应用程序。它对我有用。
© www.soinside.com 2019 - 2024. All rights reserved.