3 回答
TA贡献1853条经验 获得超18个赞
服务输入函数的工作是将接收到的原始特征转换为模型函数接受的已处理特征。
receiver_tensors
:这些是输入占位符。这将在您的图表中打开,您将在其中接收原始输入特征。
定义此占位符后,您可以对这些接收器张量执行转换,以将它们转换为模型可接受的特征。其中一些转换将包括:
预处理接收到的数据。
来自 tfrecord 的解析示例。(如果您提供 tfrecord 作为服务功能的输入)
features
:一旦您变换接收张量特征,这些特征就会在预测过程中直接馈送到您的模型函数中。
在您的情况下,您提供给服务输入功能的数据不需要预处理。因此features = receiver_tensors
正在工作。
TA贡献1806条经验 获得超8个赞
据我了解,SWAPNIL 的回答是正确的。我会分享一个我的例子。
假设图的输入是一个形状占位符 [None, 64]
inputs = tf.placeholder(dtype=tf.float32, shape=[None, 64])
prediction = ... # do some prediction
但是我们从上游得到的是 32 个浮点数的数组,我们需要将它们处理成 [None, 64] 的形状,例如,简单的重复它们。
def serving_fn():
inputs = tf.placeholder(dtype=tf.float32, shape=[None, 32]) # this is raw input
features = tf.concat([inputs, inputs], axis=1) # this is how we get model input from raw input
return tf.estimator.export.TensorServingInputReceiver(features, inputs)
当然,我们可以在外部执行此过程,并在定义图的输入时提供估算器数据。在这种情况下,我们连接上游过程中的输入,原始输入的形状为 [None, 64] 所以函数将是
def serving_fn():
inputs = tf.placeholder(dtype=tf.float32, shape=[None, 64]) # this is raw input
features = inputs # we simply feed the raw input to estimator
return tf.estimator.export.TensorServingInputReceiver(features, inputs)
TA贡献1803条经验 获得超6个赞
如果您在 TensorServingInputReceiver 中进行预处理,那么receiver_tensors 和功能会有所不同。在 TensorServingInputReceiver 内部进行预处理后,特征将传递给模型。receiver_tensors 是 TensorServingInputReceiver 的输入,它们可以是 tf.Example 格式
添加回答
举报