我有一个简单的LinearModel,它有两个稀疏和两个实值特征。我训练了它,现在我想用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)
不幸的是,我在ValueError: A default input_alternative must be provided.
上获得了export_savedmodel
。我稍微深入了解tensorflow的代码库,似乎build_parsing_serving_input_receiver_fn
总是返回ServingInputReceiver
但是如果传递给export_savedmodel的serving_input_fn
不属于类型,则提取input_alternatives的方法总是将它们设置为空InputFnOps
。
build_parsing_serving_input_receiver_fn
是否被某种方式弃用,在提取input_alternative的过程中出现了问题,或者我可能完全误解了进程并做错了什么?
我正在使用带有tensorflow 1.2的python 3.6,我的模型很简单tf.contrib.learn.LinearRegressor
。
答案 0 :(得分:3)
您可以尝试以下
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)