问题描述
我正在使用TFX和kubeflow生成语义分割模型。我在示例中看到的唯一基于图像的模型在这里(https://github.com/tensorflow/tfx/blob/master/tfx/examples/cifar10/cifar10_utils_native_keras.py)。
我能够在管道中训练模型,但是TF服务有问题。 该模型与签名一起保存
def _get_serve_image_fn(model):
"""Returns a function that parses a serialized tf.Example."""
@tf.function
def serve_tf_image_fn(img):
"""Returns the output to be used in the serving signature."""
return model(img)
return serve_tf_image_fn
signatures = {
'serving_default':
_get_serve_image_fn(
model).get_concrete_function(
tf.TensorSpec(
shape=[1,360,480,3],dtype=tf.int64,name=_transformed_name(_IMAGE_KEY)))
}
model.save(fn_args.serving_model_dir,save_format='tf',signatures=signatures)
我可以使用此签名保存模型。但是当Evaluator组件运行并且测试数据通过推理时,出现以下错误
RuntimeError: tensorflow.python.framework.errors_impl.InvalidArgumentError: cannot compute __inference_signature_wrapper_239460 as input #0(zero-based) was expected to be a int64 tensor but is a int32 tensor [Op:__inference_signature_wrapper_239460] [while running 'ExtractEvaluateAndWriteResults/ExtractAndEvaluate/ExtractPredictions/Predict']
评估者代码为
evaluator = Evaluator(
examples=transform.outputs['transformed_examples'],model=trainer.outputs['model'],baseline_model=model_resolver.outputs['model'],eval_config=eval_config)
transform.outputs ['transformed_examples']的输出应该是“ int64”。如果我将签名更改为int32,则出现以下错误
RuntimeError: tensorflow.python.framework.errors_impl.InvalidArgumentError: transpose expects a vector of size 2. But input(1) is a vector of size 4
[[{{node StatefulPartitionedCall/model_1/stem_conv/Conv2D-0-TransposeNHWCToNCHW-LayoutOptimizer}}]] [Op:__inference_signature_wrapper_507776]
Function call stack:
signature_wrapper [while running 'ExtractEvaluateAndWriteResults/ExtractAndEvaluate/ExtractPredictions/Predict']
欢迎提供调试或解决问题的任何有用评论。预先谢谢你!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)