使用Tensorflow服务为Kerasbuilded Tensorflow模型提供服务时出现连接层错误

2024-05-05 03:58:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试为tensorflow服务中的特定模型调用predict时遇到了一个奇怪的错误:

grpc.framework.interfaces.face.face.AbortionError: 
AbortionError(code=StatusCode.INVALID_ARGUMENT, details="ConcatOp : Expected 
concatenating dimensions in the range [-1, 1), but got 1
 [[Node: lys_conc/concat = ConcatV2[N=4, T=DT_FLOAT, Tidx=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_lys_in_0_4, _arg_lyb_in_0_0, flatten_1/Reshape, batch_normalization_2/batchnorm_1/add_1, lyt_conc/concat/axis)]]")

背景:我建立了一个tensorflow服务容器,并成功地将一些模型移入并检查是否可以获得客户机响应(我可以)。在

我通过在keras中构建和训练模型,然后导出它们并加载到tf服务中,如答案in this post所示。在

它失败的节点意味着连接4个源(2个输入,一个平坦的嵌入和一个dropout的输出)。出口过程已经消除了这种退出——这就是为什么我们看到(前面的)批处理规范。在

其他要点:

  • 我有另一个模型,它的concat只有两个输入(嵌入+dropout),在同一个tf服务实例上可以很好地工作。在
  • 在Keras中,我没有为concat指定一个轴,但是我可以在graph def(导出之前-见下文)中看到它默认(正确)为1。在
  • 我注意到错误中引用的axis变量不是属于这个concat层的(lyt而不是lys)。但被引用的对象也应设置为1。我想知道这是否与错误有关,或者只是导出过程中发生的一些小优化。在

相关图形定义:

^{pr2}$

任何帮助或建议调试感谢!在


Tags: in模型devicetftensorflow错误dtarg
1条回答
网友
1楼 · 发布于 2024-05-05 03:58:45

首先,将tensorflow服务中的潜在问题与预测本身的数据输入格式分开可能是个好主意 很可能存在一个输入维度问题,这样当连接嵌入时,会抛出一个错误。在

尝试从导出的模型创建tensorflow predictor对象,看看是否可以从预测中获得有效的输出

from tensorflow.contrib import predictor
predictor_obj = predictor.from_saved_model(export_dir)
y = predictor_obj(inputs_to_model)

如果这样运行,那么您的输入应该具有正确的维度。确保尝试批处理输入和单个输入)

如果失败,您可能需要重新调整输入

相关问题 更多 >