我有一个简单的线性模型,其中包含两个稀疏值特征和两个实值特征。我训练了它,现在我想用 export_savedmodel 导出它。引用了一些资料,我想出了一些类似的东西:
feature_spec = create_feature_spec_for_parsing(
[
real_valued_column_1, real_valued_column_2,
sparse_column_1, sparce_column_2
]
)
input_receiver_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)
my_estimator.export_savedmodel('my_model/', serving_input_fn=input_receiver_fn)
哪里:
real_valued_column_1 = tf.contrib.layers.real_valued_column(
'avg_consumption_h')
sparse_column_1 = tf.contrib.layers.sparse_column_with_integerized_feature("sparse_1", bucket_size=24)
不幸的是,我在 export_savedmodel 上收到 ValueError: A default input_alternative must be provided.。我深入研究了 tensorflow 的代码库,似乎 build_parsing_serving_input_receiver_fn 总是返回 ServingInputReceiver 但如果 serving_input_fn,提取 input_alternatives 的方法总是将它们创建为空> 传递给 export_savedmodel 的类型不是 InputFnOps。
build_parsing_serving_input_receiver_fn 是否以某种方式被弃用,提取 input_alternative 的过程中有问题,或者我完全误解了过程并做错了什么?
我使用 python 3.6 和 tensorflow 1.2,我的模型是一个简单的 tf.contrib.learn.LinearRegressor。
请您参考如下方法:
你可以试试下面的方法
from tensorflow.contrib.learn.python.learn.utils.input_fn_utils import build_parsing_serving_input_fn
input_receiver_fn = build_parsing_serving_input_fn(feature_spec)
