我用 modelzoo/mmoe 跑训练,但是我还需要生成 saved_model,请问该怎么修改?

问一个机器学习PAI问题,我用 modelzoo/mmoe 跑训练,但是我还需要生成 saved_model,请问该怎么修改?

现在我是这么写的,就在 MonitoredTrainingSession 调用之后:
inputInfo = {key : tf.saved_model.utils.build_tensor_info(val) for key, val in model._feature.items()}

inputInfo = {"input": tf.saved_model.utils.build_tensor_info(model.input_emb)}

outputInfo = {"output": tf.saved_model.utils.build_tensor_info(model.output)}
print("inputInfo: ", inputInfo)
print("outputInfo: ", outputInfo)

prediction_signature = (
tf.saved_model.signature_def_utils.build_signature_def(
inputs = inputInfo,
outputs = outputInfo,
method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))

sess.graph._unsafe_unfinalize()
builder = tf.saved_model.builder.SavedModelBuilder(export_path)
builder.add_meta_graph_and_variables(
sess._tf_sess(), [tf.saved_model.tag_constants.SERVING],
signature_def_map = {'predict': prediction_signature,})
builder.save()

但不管我怎么设置 input 和 output,都会报错:
tensorflow.python.framework.errors_impl.InternalError: Output 3 of type int32 does not match declared output type int64 for node {{node prefetch_2/TensorBufferTake}}

有人知道怎么解决吗?多谢了~

展开
收起
真的很搞笑 2023-09-13 16:20:45 175 分享 版权
1 条回答
写回答
取消 提交回答
  • TensorBufferTake 这个op,是staged引入的,不应该出现在serving 图中。serving 应该构造一个不含stage的图 ;推理的时候不是重新构图么,构图的时候去除staged 阶段,此回答整理自钉群“DeepRec用户群”

    2023-09-13 18:36:34
    赞同 展开评论

人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。

热门讨论

热门文章

还有其他疑问?
咨询AI助理