繁体   English   中英

在使用Tensorflow服务提供Keras构建的Tensorflow模型时,连接层出现错误

[英]Error with Concatenation layer when serving Keras-built Tensorflow model with Tensorflow Serving

尝试在张量流服务中调用特定模型的预测时出现奇怪的错误:

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)]]")

背景:我设置了一个张量流服务容器,并成功地将一些模型移入并检查是否可以得到客户端响应(可以)。

按照这篇文章的答案我通过在keras中构建和训练模型,然后将其导出并加载到tf-serving中来制作模型。

发生故障的节点旨在连接4个源(2个输入,1个扁平化嵌入和1个辍学输出)。 退出过程已被导出过程删除-这就是为什么我们在那里看到(先前的)batchnorm的原因。

其他要点:

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

相关图定义:

node {
  name: "lys_conc/concat/axis"
  op: "Const"
  attr {
    key: "dtype"
    value {
      type: DT_INT32
    }
  }
  attr {
    key: "value"
    value {
      tensor {
        dtype: DT_INT32
        tensor_shape {
        }
        int_val: 1
      }
    }
  }
}
node {
  name: "lys_conc/concat"
  op: "ConcatV2"
  input: "lys_in"
  input: "lyb_in"
  input: "flatten_1/Reshape"
  input: "dropout_2/Identity"
  input: "lys_conc/concat/axis"
  attr {
    key: "N"
    value {
      i: 4
    }
  }
  attr {
    key: "T"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "Tidx"
    value {
      type: DT_INT32
    }
  }
}

任何帮助或建议调试表示赞赏!

首先,将张量流服务和数据输入格式中的潜在问题与预测本身分开是一个好主意。最有可能存在输入维问题,以便在嵌入嵌入时引发错误。

尝试从导出的​​模型创建一个tensorflow预测器对象,并查看是否可以从预测中获得有效输出

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

如果运行成功,则您的输入应具有正确的尺寸。 确保您尝试批输入以及单输入)

如果失败,则可能需要重塑输入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM