我正在为神经网络使用带有批处理的 tensorflow 服务。我的代码基于inception 网络的示例:我想对图中的图像进行解码和预处理,因此我修改了导出脚本,以便使用 map 函数对图像进行预处理:
...
with tf.Graph().as_default():
# Build inference model.
jpegs = tf.placeholder(tf.string, shape=(None))
images = tf.map_fn(lambda jpeg : image_processing.image_preprocessing(jpeg, False), jpegs,
dtype=tf.float32, back_prop=False)
# Run inference.
logits, _ = inception_model.inference(images, len(labels_names))
...
image_preprocessing与 inception 模型中的相同。它接收以字节为单位的编码图像,并返回一个浮点值的张量,图像被解码、缩放和预处理。
该模型已正确导出,但是当我在 tensorflow 服务中对其进行测试时,我收到以下错误:
grpc.framework.interfaces.face.face.NetworkError: NetworkError(code=StatusCode.INTERNAL, details="输出 0 类型字符串与节点 _recv_map/TensorArrayPack_0 = _Recvclient_terminated=true, recv_device="/job 声明的输出类型浮点不匹配:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=6080232697619483985, tensor_name="map/TensorArrayPack:0" , tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"")
输出类型应该是一个浮点张量,就像它在 image_preprocessing 中一样,但它说它是一个字符串。怎么了?(image_preprocessing 在代码的其他部分没有任何问题,所以我认为我在这些行中做错了)