java中具有自身重训练图的Tensorflow问题
我对java上的tf有一个小问题。我用python(1.8.0版)重新训练了新类别的模型,并试图用Java(Intellij、Maven project、Tensorflow 1.1.0版)识别图像。我得到了以下错误java中具有自身重训练图的Tensorflow问题,java,tensorflow,Java,Tensorflow,我对java上的tf有一个小问题。我用python(1.8.0版)重新训练了新类别的模型,并试图用Java(Intellij、Maven project、Tensorflow 1.1.0版)识别图像。我得到了以下错误 java.lang.IllegalArgumentException:nodededf在Op输出中未提到attr'dictions':T;attr=T:type,允许=[DT_-HALF,DT_-FLOAT,DT_-DOUBLE];attr=步幅:列表(int);attr=use\
java.lang.IllegalArgumentException:nodededf在Op输出中未提到attr'dictions':T;attr=T:type,允许=[DT_-HALF,DT_-FLOAT,DT_-DOUBLE];attr=步幅:列表(int);attr=use\u cudnn\u on\u gpu:bool,默认值=true;attr=padding:string,allowed=[“相同”,“有效”];attr=data_格式:string,default=“NHWC”,allowed=[“NHWC”,“NCHW”]>;nodededef:module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2d=Conv2d[T=DT_FLOAT,data_format=“NHWC”,dilations=[1,1,1,1,1],padding=“VALID”,strips=[1,2,2,1],在gpu=true]上使用_cudnn_(module_apply_default/hub_input/Sub,module_apply_default/InceptionV3/InceptionV3/conv3/2d_1a_ReadVariableOp)。(检查GraphDef解释二进制文件是否与GraphDef生成二进制文件一起处于最新状态。)。
我将Maven中的tf版本更改为1.8.0,以便与python版本相同,然后我得到了这个
java.lang.IllegalArgumentException: No Operation named [DecodeJpeg/contents] in the Graph
代码中的行:Tensor result=s.runner().feed(“解码JPEG/contents”,image.fetch(“softmax”).run().get(0)){
h
当我从2015年12月开始使用预训练的inception模型图,而不是我的模型图时,一切都顺利进行,没有错误。有人知道这里发生了什么,我该如何解决吗?我非常感谢您的回答:D谢谢!从错误消息中,我收集到以下信息:
- 使用1.8.0创建模型,但使用1.1.0加载模型失败,原因是
错误,因为1.8.0二进制文件保存的图形使用了1.1.0中没有的功能。因此,您应该让Java程序使用相同或更高版本的关于TensorFlow作为生成图形的二进制的定义检查GraphDef解释二进制文件是否与GraphDef生成二进制文件最新。
- 第二条错误消息表明,模型中输入张量的名称与预训练模型中的名称不同。您希望用适当的名称替换Java程序中的字符串
。很难说它是什么,因为它取决于程序的详细信息。但是,如果您可以计算出为DecodeJpeg/contents
,然后在Java中提供会话的
参数提供的张量的名称。在Python中运行feed\u dict